可执行jar打包成exe文件,最常见的大概就是exe4j了吧。不过,现在都2020年了,这里介绍一下,使用 java8提供的 javapackager 的方式来实现。
预备工作
首先,需要预备工作
1.java8环境
这个就不用多说了
2.Inno Setup Compiler
window上软件打包工具
3.wix
打包成exe文件需要
4.示例的可执行jar
文中给出的案例是使用Swing组件弹出一个对话框,代码很简单,就两行代码
package com.frank.test;
public class Java2exe {
public static void main(String[] args) {
javax.swing.JOptionPane.showMessageDialog(null, "hello java2exe");
System.exit(0);
}
}
打成可执行的jar,也很简单,比如使用的是eclipse,可以:选中项目,右键,选择 Export
导出时的配置勾选
开始打包
首先进入jar所属文件夹
比如我是放在 D:\tmp\java2exe 目录下,进来,然后,打开cmd,cmd也得进入D:\tmp\java2exe 目录。这里有个小技巧,直接在文件夹的地址栏 输入cmd,再回车,就直接进入cmd界面,并且已经进入当前路径
再执行打包命令
javapackager -deploy -native image -outdir outdir -outfile Java2exe -srcfiles java2exe.jar -appclass com.frank.test.Java2exe -name Java2exe
然后,你就会看到,文件夹内多了一个 outdir 文件夹,里面有很多东西,在outdir/bundles/Java2exe目录下,有一个 Java2exe.exe 文件,它就是我们最终需要的exe可执行文件
结果验证
双击Java2exe.exe文件测试一下
参数详解
好了,已经可以达到预期了。但是 打包过程中,使用到的命令,具体是什么含义呢?一个一个来解释
javapackager -deploy -native image -outdir outdir -outfile Java2exe -srcfiles java2exe.jar -appclass com.frank.test.Java2exe -name Java2exe
其中:
javapackager 是java8自带的打包程序
-deploy 表示要打包成exe或者其他平台的包
-native image 创建原生的镜像(打成window的exe)
-outdir outdir ,输出的目录,后面的具体目录
-outfile Java2exe 输出的文件,后面是文件名
-srcfiles java2exe.jar ,要打包的jar文件,后面是具体文件
-appclass com.frank.test.Java2exe ,jar的全限定名,就是详细包名+类名
-name Java2exe ,最终给使用者呈现的名字,就是 结果验证 过程中,双击的那个文件名
当然,还有其他的参数,比如 -description 应用的描述、-Bicon 图标等等。在cmd中,使用 javapackager 可以列举出所有的参数及其注释
用户无JRE环境,可以直接运行?
可以的。如果要提供给用户使用,用户电脑上没有安装JRE环境,需要把 outdir 全部提供给用户,因为 outdir文件夹内,包含了JRE所需的所有文件。