用到的工具有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的问题