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文件夹


第六步中的 Preferred VM 如果是桌面应用选择 client hotspot VM 如果是服务端后台执行的选择 Server hotspot VM

第七,八,九,十一路下一步就好

可以直接运行,依赖的是上面的jre 这样不是很优雅。于是就发现配合第三种方式就完美了。
第三种,使用 WinRAR, 对没有错,就是这个经典老牌的压缩工具打包成 exe。
这种方式让人感觉很舒服,配合exe4j 简直完美。首先我们准备好 exe打包好的文件夹,第一个是java环境第二个是可执行文件,第三个是图标

来到上级目录,右键 jjm 这个文件夹,选择压缩,选择 创建自解压格式压缩文件

高级选择自解压选项

设置 解压后运行的路径,更具自己的目录名称和exe文件名称写

模式选择 解压到临时文件夹 全部隐藏

更新选择如下

exe的图标看个人喜好不设置也可

浙公网安备 33010602011771号