java程序打包成exe 无需java环境windows也可以运行
java程序打包成exe 无需java环境windows也可以运行
事情的发展,导火索,spring3.0正式发布,新特性说可以把springboot项目打包成exe,于是乎就试了试,真的是艰难。。。。。。!但是功夫不负有心人,经历一个通宵的试错,终于还是弄出来了,一共有3种方式吧。
第一种,使用 GraalVM,可以直接将 springboot 项目打包成 exe 文件,包含运行环境,无需 jdk 环境的电脑也可以运行。
需要准备的以下工具
eclipse或者IDEA,Visual Studio(社区版),GraalVM
直接开搞,首先创建一个springboot3.0项目,写一个简单的控制器,简单测试一下是否能够启动
@RestController
public class DemoController {
@Resource
private DemoService demoService;
@RequestMapping("/hi")
public String getName() {
return "hello";
}
}
启动后,从浏览器访问一下看看是否正常
到这里,我们假装已经开发完整一个非常厉害的项目了。开始我们的正题,打开pom配置一下以下打包工具 上面的是需要添加的
<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>
修改java环境为 GraalVM环境,先去下载一下 github地址:https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0
我是jdk17来测试的可用,下载完成之后就是配置环境变量,你就当你下载下来的就是jdk
配置环境变量,我比较懒,直接吧原先的环境变量改了,改成下载下来的GraalVM目录,你就当你下载下来的就是jdk^^
测试是否配置成功,命令 java -version,看到有Graalvm字眼表示成了
环境也准备好了,项目也ok了,接下来就是用maven编译一下打包就可以了,maven的配置和下载自行学习
打包命令需要在项目根目录中运行 mvn -Pnative clean native:compile (这里有坑,不能直接在cmd中运行,需要借助工具,网上也有说配置环境变量的太麻烦了)
直接运行的错误
需要借助工具
如果没有,那就需要安装一下 Visual Studio(社区版)
下载完成后是这样的
接下来我就不是很清楚就是装上就好了
不要问为什么,因为我也不知道
这两个也勾选上,安装需要挺久的,不然我也不可能搞到半夜3点了
安装完成之后,就有刚刚的工具了,打开是这样的
关键的一点,还需要安装一下对应的 native-image,往下拉
安装一下 gu -L ../../install native-image-installable-svm-java17-windows-amd64-22.3.0.jar
再执行命令 mvn -Pnative clean native:compile
看到这里就成功了。
找到项目根目录中的 target
demo运行非常快,窗口还没有打开已经启动完成了...
但是问题来了,前一段时间搞了点桌面应用,也想打包成 exe 但是使用第一种方式失败了。于是研究了第二种和第三种方式。
第二种,使用 exe4j 工具,将 jar 打包成 exe,如果有额外配置文件,这种就不是很优雅。
首先确保jar能够正常运行,然后使用exe4j工具进行转换为exe,添加相对路径的jre让他能够跟着文件夹走,也就不用依赖系统jdk环境了
exe4j 10个操作我们要先准备好 jre和jar
开始
第一步,直接下一步来到第二步,选择 "JAR in EXE”mode 下一步
第三步,写项目名和需要打包的文件夹
第四步,写上exe的名称,图片可以不填,然后里面32-bit or 64-bit 需要勾上现在一般电脑都是64位操作系统了
第五步,添加 可执行的jar
第六步,配置一下jdk版本最低版本,最高的可以不写
第六步中的 search sequence,选择jre文件夹