之前java程序封装成exe 较为麻烦,对于一些需要windows部署的项目不是很友好,生产环境必须要求要安装jdk,并且通过java -jar 的方式运行jar包,windows下容易误触cmd命令窗口导致程序暂停。对于这种情况可以考虑通过下文方式将程序封装成exe来运行。
1.环境准备
本文以windows环境下载idea中运行为例
- jdk 版本要求 17 及以上,不向下兼容,springboot 版本 要求3.0 +,idea版本要求 2022.1及以上,之前的idea版本 不支持使用jdk17
2.项目代码说明
- 如图可以通过 Spring Initializr 初始化一个spring项目
2.把下面的依赖 引入到你的基于maven管理的springboot项目中,或者对照pom文件进行修改
(这里必须要注意:jdk 版本要求 17 及以上,不向下兼容,springboot 版本 要求3.0 +)
- pom 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--不显示的依赖lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.在配置文件中指定端口即可
# Tomcat
server:
port: 8081
4.创建一个测试controller
@RestController
@RequestMapping("info")
public class TestController {
@GetMapping("/test")
public String test(){
return "hello spring boot 3.0";
}
}
5.启动项目,访问接口 没有问题 就可以进行项目封装exe 啦
3.封装 exe
在项目的根目录下(也就是 和pom文件同一级)执行以下命令即可将项目封装成exe。
mvn -Pnative native:compile
这里要注意的是通过 cmd 命令窗口直接执行上述命令会报错,需要开发环境下安装 graalvm 以及 Visual Studio
- graalvm 安装
下载地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0
建议下载 对java17支持的版本
下载安装之后如图所示
配置环境变量
# JAVA_HOME 指定 graalvm-ce-java17-22.3.0 安装位置,
# 另外需要在 PATH 下指定 graalvm-ce-java17-22.3.0的bin目录,
# 如果存在多个jdk 建议将graalvm-ce-java17-22.3.0的bin 配置上移 如图所示
cmd 查看 java -version 如图所示即为安装成功
- Visual Studio 安装
下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/
下载社区版即可,下载之后安装时注意选择使用 C++ 开发桌面 开发
安装好vs 以及graalvm 就可以进行 exe的封装啦!
- 搜索vs 并打开命令窗口,通过cd命令,找到项目所在的pom.xml 所在的文件夹
- 再次执行
mvn -Pnative native:compile
命令就可以成功啦 - 在项目的target目录下就可以找到封装好的exe程序