java 项目打包
0 写在前面
这个教程只是对我个人经验的总结,并非完善的教程。
文章内容是把 java 程序制作 jar 包以及导出无需环境的 exe。
工具:IDEA
1 大致流程(原理)
把项目的源码编译后的字节码文件通过 IDEA 打包为 jar,这个过程被被 IDEA 称为"构建工件"。
找到 Jar 包,把它和你的资源文件按照合适的相对路径放在一个文件夹里。
创建 EXE 可执行文件:使用 exe4j 软件导出 exe 文件,同时附上需要的运行需要的 jre;同样别忘了你的资源文件。
2 准备步骤
2.1 调整项目结构(重要)
我的策略是把资源文件放在 src 的外面,这样 jar 本身的大小就只跟源码文件大小有关,一般很小;但资源文件是外挂的,如果想要把资源文件也放在 src 里的话请另寻方法。
如果想使用本教程,请先进行移动资源文件至 src 外的操作。
2.2 导出 jre
在 java 11 之后官网上就不提供 jre 下载了,之后想要对应版本的 jre 需要自己从 jdk 中导出。
首先看看你的项目的 jdk 版本。
这个在 文件 -> 项目结构 -> 项目设置 -> 项目 里查看。如我使用的是 jdk 11.0.15。
SDK(jdk) 的位置可能不是你自己安装的 jdk 的位置,请注意。
比如你安装了 jdk 17,而项目使用了 jdk 11,那么IDEA 可能会找另一个位置放它需要的 jdk,比如下图,IDEA 就把项目需要的 jdk 放在用户文件夹里了。
在 项目结构 -> 平台设置 里查看。
下一步就是打开对应的 jdk 的目录。
你也可以打开 cmd 执行 cd 命令进入目录,看个人喜好。
接下来在该目录下打开 cmd,输入执行:
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
用此命令来导出 jre,等待一小会儿,没有显示表示正常。也可以输入 dir
命令查看,jre 就在该目录中。
最后把 jre 文件夹复制走就行。
2.3 下载 exe4j 软件
exe4j 是一个把 jar 导出为 exe 的软件,需要 KEY。
本人郑重声明:仅用于学习。
官网:ej-technologies - Java APM, Java Profiler, Java Installer Builder
KEY:A-XVK258563F-1p4lv7mg7sav
打开软件之后注册时需要填写姓名和公司,这个随便填一下就行。
如果实在是无法从官方渠道获得,或者是正版渠道付费太高,再去考虑 D 版。这个软件官网好好的,就别去什么下载站和微信公众号里下载了。原因不仅是低版本的 exe4j 不支持高版本的 jdk,而且在他们那里下载总有种被当成弱智的感觉 :(。
3 在 IDEA 中导出 jar 包并运行它
IEDA 本地的教程就有关于这一部分的讲解,很详细,但好像很难打开,所以这里还是再说一遍。
Create your first Java application | IntelliJ IDEA
神奇的链接,貌似只有打开 IDEA 才能打开。
- 文件 -> 项目结构 -> 项目设置 -> 工件
- 点击 + 号,选择 JAR -> 来自具有依赖项的模块。
- 进入 "从模块创建 JAR" 窗口后,要选择主类,那么点击后面的文件夹图标,让 IEDA 自己搜索到 Main 类,选择并确定即可。
- 回到项目结构界面,依次点击应用和确定。
- 选择 构建 -> 构建工件
- 在弹出的窗口继续选择构建。
- 最后找到构建好的工件,也就是 jar 包,一般在默认位置。
- 把它放到新的文件夹中,和资源文件按照指定的路径放在一起即可,尝试点击 jar 运行。
注意:这仍然需要用户的电脑上已经安装 java 环境。
4 在 exe4j 中导出 exe
- 请先准备好你的软件包的其他部分再开始导出 exe。
文件夹下需要你的资源文件,jre 文件夹。
- 总的来说,按照 exe4j 给定的步骤操作就行,但仍有需要注意的点,下面是讲解。
- 在第三步选择:"JAR in EXE" mode
- 在第四步输入可执行文件名称,此为必选项,其余设置依你而定。
比如我设置了只允许运行单一实例,也就是我不希望同时开启多个游戏窗口。如果我不选择,可预见的是我的程序会在文件读写的地方出现错误。
- 在第五步导入 jar 包,点击加号,再是省略号去寻找你的 jar 包。
- 仍然是第五步,选择主类。
- 在第六步,先输入允许的 jre 版本,这里可以任意,我填写的是最小 1.6,最大 1.8;再点击 高级选项 -> Search sequence。
- 在接下来的窗口设置 jre。
首先删除默认的三项,它们使用的是环境,这不是我们所希望的,我们希望的是运行不依赖于环境,而这需要我们自己准备的 jre。
选择我们的准备的 jre 包,注意,它必须和你的 exe 文件在同一目录,这也是我在 1 里提到的。
点击加号,选择 Directory,找到 jre。
- 接下来的步骤就可以一路点击下一步了,结束生成后,点开 exe 看看效果吧!