Java打包成exe(任意jdk都可以),借助exe4j

用到的工具有IDEA,exe4j,对应的官网如下:

https://www.jetbrains.com/idea/

https://www.ej-technologies.com/exe4j/download

具体下载步骤网上有自己看咯

一、用IDEA将代码打成jar包

找到项目结构

找到“工件”,点击“+”然后选“添加jar来自具有依赖性目模块”(作者的自言自语:正常来讲都有用到第三方包吧Owo)

接着选择入口类/主类

点击确定后会有一个像这样的工件,勾上”包含在项目构建中“

然后在“构建”栏选择构建工件

idea构建完毕后项目栏应该会有一个out文件夹,里面就有jar包,有的话恭喜你完成第一步了Owo

二、用exe4j将jar包打包成exe

第一步:Welcome

这个地方最好要注册一下,如果你不注册,打包好的软件每次启动都会报:this executable was created with an evaluation version of exe4j

第二步: ProjectType

第三步:Application info

第四步:Executable info

第五步:Java invocation

选择Jar 并Archive后,空白区域会显示已导入的jar,在点击选择Main class,若jar导入成功,则会自动搜素main类,也可以自己选择Main类,然后点击next

jar包位置直接参考IDEA的这个

jar包导入之后

 第六步:JRE

跟我的填,如果程序用的版本低于1.7or高于21就增大区间

最重要的一小步,添加jre/jdk,告诉exe要去哪拿到Java编译器来运行(如果其他人没配置Java环境变量,那么如果这一步不配置是运行不了的,因为他们的电脑没有配置环境变量导致exe不知道去哪找到开启JVM的工具,而Java程序都是只能运行在JVM里面)

.\代表exe所在文件夹下,jdk-21是Java的jdk路径(这里也可以改成jre,不过后面要搞额外的操作来让jdk分离一个jre文件夹给你,后面会说),合起来就是让exe每次运行都去找所在文件夹里面的jdk-21来开启JVM(这是我的理解)

 第七步

一路next到Finished,中间有一段生成过程稍等一下就行(可以点击Save as保存整个配置过程,下次就不用从头开始配置了)

第八步 

新建个文件夹,把jdk,生成的exe,程序用到的资源文件(即需要读写的文件)放在该文件夹

不知道jdk去哪找直接去idea看0.0

到这一步exe应该就能运行了Owo

附加 关于用jre替换jdk

上面说了如果用./jre要搞额外的工作,这里就来提一下

java1.8之后jdk里面就不再独立一份jre给开发者,要自己用命令来生成

用命令行找到你对应的jdk目录

运行该命令

bin/jlink.exe --module-path jmods --add-modules java.desktop --output jre

有的小伙伴执行完:C:\Program Files\Java\jdk-17>bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
出现错误提示:错误: C:\Program Files\Java\jdk-17\jre
原因是:命令行并没有使用管理员身份打开。

没问题的话就会有jre文件夹

将其复制到exe所在文件夹,然后运行exe,你很有可能会发现............

报错了!!

因为jre只包含开启和管理jvm的类库(我的理解),而项目需要的默认库通常不止jre,so,你需要将jdk里面的bin和lib文件夹复制一份给jre的bin和lib,来完善项目需要的默认库。

到此结束○| ̄|_

作者自言自语:可能有的人会好奇为什么要用jre,直接用jdk不行嘛,emm别问,问就是能减少几十MB的存储空间(●'◡'●)

这是参考的大佬文章 

使用 exe4j 打出来的 exe 缺少 javax/script/Bindings

jdk1.8以上的版本(jdk9,jdk11,jdk17等)没有jre的问题 

 如何将 java 项目打包成exe可执行文件_java打包成可执行文件-CSDN博客

 exe4j打包jar成exe,实现在没JDK环境的电脑运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值