java程序打包成exe 无需java环境windows也可以运行

java程序打包成exe 无需java环境windows也可以运行

事情的发展,导火索,spring3.0正式发布,新特性说可以把springboot项目打包成exe,于是乎就试了试,真的是艰难。。。。。。!但是功夫不负有心人,经历一个通宵的试错,终于还是弄出来了,一共有3种方式吧。

第一种,使用 GraalVM,可以直接将 springboot 项目打包成 exe 文件,包含运行环境,无需 jdk 环境的电脑也可以运行。

需要准备的以下工具

eclipse或者IDEAVisual Studio(社区版)GraalVM

直接开搞,首先创建一个springboot3.0项目,写一个简单的控制器,简单测试一下是否能够启动
@RestController
public class DemoController {
	
	@Resource
	private DemoService demoService;
	
	@RequestMapping("/hi")
	public String getName() {
		
		return "hello";
	}

}

image

启动后,从浏览器访问一下看看是否正常

image

到这里,我们假装已经开发完整一个非常厉害的项目了。开始我们的正题,打开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

image

我是jdk17来测试的可用,下载完成之后就是配置环境变量,你就当你下载下来的就是jdk

image

配置环境变量,我比较懒,直接吧原先的环境变量改了,改成下载下来的GraalVM目录,你就当你下载下来的就是jdk^^

image

测试是否配置成功,命令 java -version,看到有Graalvm字眼表示成了

image

环境也准备好了,项目也ok了,接下来就是用maven编译一下打包就可以了,maven的配置和下载自行学习
打包命令需要在项目根目录中运行 mvn -Pnative clean native:compile (这里有坑,不能直接在cmd中运行,需要借助工具,网上也有说配置环境变量的太麻烦了)
直接运行的错误

image

需要借助工具

image

如果没有,那就需要安装一下 Visual Studio(社区版)

image

下载完成后是这样的

image

接下来我就不是很清楚就是装上就好了

image

不要问为什么,因为我也不知道

image

这两个也勾选上,安装需要挺久的,不然我也不可能搞到半夜3点了

image

安装完成之后,就有刚刚的工具了,打开是这样的

image

关键的一点,还需要安装一下对应的 native-image,往下拉

image

安装一下 gu -L ../../install native-image-installable-svm-java17-windows-amd64-22.3.0.jar
再执行命令 mvn -Pnative clean native:compile

image

看到这里就成功了。
找到项目根目录中的 target

image
image

demo运行非常快,窗口还没有打开已经启动完成了...

但是问题来了,前一段时间搞了点桌面应用,也想打包成 exe 但是使用第一种方式失败了。于是研究了第二种和第三种方式。

第二种,使用 exe4j 工具,将 jar 打包成 exe,如果有额外配置文件,这种就不是很优雅。

首先确保jar能够正常运行,然后使用exe4j工具进行转换为exe,添加相对路径的jre让他能够跟着文件夹走,也就不用依赖系统jdk环境了

exe4j 10个操作我们要先准备好 jre和jar

image

开始

image

第一步,直接下一步来到第二步,选择 "JAR in EXE”mode 下一步

image

第三步,写项目名和需要打包的文件夹

image

第四步,写上exe的名称,图片可以不填,然后里面32-bit or 64-bit 需要勾上现在一般电脑都是64位操作系统了

image
image

第五步,添加 可执行的jar

image
image

第六步,配置一下jdk版本最低版本,最高的可以不写

image

第六步中的 search sequence,选择jre文件夹

image
image

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

image

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

image

可以直接运行,依赖的是上面的jre 这样不是很优雅。于是就发现配合第三种方式就完美了。

第三种,使用 WinRAR, 对没有错,就是这个经典老牌的压缩工具打包成 exe。

这种方式让人感觉很舒服,配合exe4j 简直完美。首先我们准备好 exe打包好的文件夹,第一个是java环境第二个是可执行文件,第三个是图标

image

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

image

高级选择自解压选项

image

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

image

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

image

更新选择如下

image

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

image

最后一路确认,打包完成

终于写完了,看到这里的朋友给个赞呗,有问题的欢迎指出,因为搞了两天没有睡好觉,可能有些遇到的问题一时间没有想起来……

posted @ 2022-12-01 19:15  不一样的爪哇  阅读(3168)  评论(0编辑  收藏  举报