在这里,我们要实现两个目标:
1.把java程序文件(jar文件)打包成应用程序文件(exe文件)。
2.捆绑jre,使java程序能在java环境的电脑上运行。
下面,我将会介绍市面上的三款小软件,利用其中的一款或两款,就能实现上述目标:
1.Jar2Exe Wizard,该软件能实现目标1。
2.JavaLaucher,该软件能实现目标2。
3.exe4j,该软件能同时实现目标1和目标2。(附件中的版本好像是64位的,如果32位的系统不能用的话,请自己用百度搜吧。)
不过在此之前,我们得准备一些实验素材:1个jar文件,一张png图片
但是这样还不够,因为exe文件的图标得是ico格式的图标文件,所以我们得先把图片转换成图标。在这里,我推荐两个在线图标制作的网站:converticon.和谐com、www.和谐ico.la。个人喜欢前面那个,因为至少界面好看多了。
好了,打开网站后,点击Get Started:
弹出浏览窗口后,选择我们准备好的这张图片:
点击Expot:
选择需要的尺寸,并点击Save As(那个Original Size是原尺寸的意思,这里不建议使用,貌似制作出来的有问题):
都保存到D盘好了:
于是我们现在有了以下三个文件:
好了,前期准备工作做完了,现在我们开始使用上面说的小软件吧。
首先,我来介绍一下Jar2Exe Wizard,Jar2Exe Wizard作为一款打包软件,其优点是操作方便(我这里用的是1.8版本的,1.6版本的更简单一点),缺点是没有捆绑jre功能。
我们打开这个j2ewiz.exe文件:
点击“浏览JAR”,选择需要打包的jar文件,在下面的版本号中选择相对应的jre版本,稍微选低一点貌似也无所谓:
因为我的这个程序是个窗口程序,并不需要控制台,所以我选择第二个,如果想要显示控制台,可以选第一个:
软件会自动识别main方法所在的类,如果有多个的时候,就得选择了。下面那个Splash窗口,由于该软件貌似不支持透明的图片,所以这里就不设置了(至于Splash窗口是什么,用过adobe软件的同学都知道,打开软件之前会有一个花哨的窗口,那个就是了):
反正我也不会反编译打包过的文件,而且也不怕别人反编译,所以我就不隐藏class文件了:
我这个程序也没有引用什么jar包,所以也不需要设置了:
上面是输出路径,大家都懂的,下面的“图标及版本”按钮,请按一下:
点击“添加”按钮可以添加图标:
找到我们准备好的图标:
这里可以添加多个图标,我们一个就够了。下面是版本号,随便填一下。再下面是一些版本信息,双击可以弹出修改窗口,我把重要的都填一下,到时候打包后的exe文件的属性中就能看到这些信息了:
点击OK,回来后,发现图标变了,至于下面这个复选框,不重要:
当你看到这一页的时候,打包已经完成了,你可以点击右上角的叉叉关掉了。当然,如果点击“参数配置”按钮,配置完后,则会在当前目录生成一个配置文件。
下面,我们要利用JavaLaucher进行打包,其优点是操作方便,修改也方便,缺点是要以“Lauch.exe”这个文件打开。
我们在D盘创建一个文件夹,把jre文件夹、打包后的“FileMerge.exe”文件和“Launch.exe”文件都复制进来,然后新建一个记事本:
把记事本重命名为“launcher.cfg”,注意,文件名为“launcher”,扩展名为“cfg”:
打开“launcher.cfg”文件,在第一行写上“.”,即当前目录,在第二行写上“javaw.exe”文件的路径,在第三行,先写上“-jar”,加空格后,再写上打包后的java程序路径(第二行和第三行的“.\”可以省略,“Launch.exe”文件、jre文件夹和java程序都可以随便放,只要路径写对就行,但是“launcher.cfg”文件必须和“Launch.exe”文件放在同一目录)。
是不是感觉很眼熟?没错,其实这就是调用命令提示符执行“jre1.7.0_45\bin\javaw.exe -jar data\FileMerge.exe”命令。如果你没有“Launch.exe”文件,新建一个记事本,将扩展名改成“bat”(批处理文件),在里面写上“jre1.7.0_45\bin\javaw.exe -jar data\FileMerge.exe”,然后双击,也能运行,只不过多了个命令提示符窗口。
也就是说,“Launch.exe”文件实质上就是一个用C#写的调用命令提示符的小程序而已。