把jar打包成exe

把jar打包成exe,回答得烦了,就干脆开一个帖子做个教程好了。


在这里,我们要实现两个目标:
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,回来后,发现图标变了,至于下面这个复选框,不重要:




当你看到这一页的时候,打包已经完成了,你可以点击右上角的叉叉关掉了。当然,如果点击“参数配置”按钮,配置完后,则会在当前目录生成一个配置文件。




看,exe文件出现了,好神奇!






下面,我们要利用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#写的调用命令提示符的小程序而已。




如果觉得JavaLaucher有点坑,那么可以试试exe4j这个软件。该软件的优点是集打包和捆绑jre为一体,支持透明通道的Splash窗口,而且没有那么一堆配置文件,但是缺点是操作复杂,而且想改路径得重新打包,对了貌似我没找到填写版本信息什么的。


首先我们回到最初,一个jar文件,一个png图片文件,一个ico图标文件,都放在D盘根目录。



下面我们在E盘创建一个文件夹(作为打包输出目录),把jre文件夹放进来(打包输出路径不要是源jar文件所在目录或其子文件夹,这样会导致exe4j找不到主类,别问我为什么,我也不知道):




好了,打开exe4j,出现第一个界面,可以看到,我用从百度上找的激活码激活了的(没激活的exe4j,使用Splash窗口的话,在Splash窗口前还会弹出个提示,内容是“this executable was created with an evaluation version of exe4j”):




选择“JAR” in "EXE" mode:



上面填的是程序名称,下面红框里的是打包输出路径,即打包后文件的保存路径,就是前面说的新建的文件夹:



最上面的单选框和Jar2Exe的一样,窗口、控制台和服务,复选框是是否支持运行参数。接下去是打包后的文件名。再下面是图标文件的路径。那个我没打勾的复选框,如果勾上,那么打包后的exe文件,无论你双击四次八次,都只能打开一个。其他的默认就好。



看到右边绿色的加号按钮了吗?赶紧点下去!



找到要打包的jar文件:



要打包的jar文件出现在列表里了,这么貌似能添加多个,我不知道是什么心态……对了,再猛击哪个红框中的按钮:



这里会自动出现所有的主类,我们得选一个。上面说过了,输出路径得注意,如果打包输出路径是源jar文件所在目录或其子文件夹,那么这里就不会出现主类了:


点击OK后,主类出现在这里了:



这里要设置允许的最低jre版本,如果要支持透明通道的Splash窗口,那么至少得写1.6,对了,不能不写。下面的看着办,按需要设置。设置完后别急,别点NEXT,点击Advanced Options或者选择左边红框里的子页面:


这里列表显示的是jre的搜索序列,如果不想捆绑jre,这步可以跳过。可以看到,先搜索的是注册表(jre安装的时候,会在注册表登记路径,所以移动jre会使jre失效),然后再是JAVA_HOME,第三是JDK_HOME,后两个是系统的环境变量。我们现在点击右边的绿色加号按钮:



先选择上面的Directory,再点击下面红框里的按钮:



选择我们复制到输出目录的jre文件夹:



选择后变这样,因为是在输出目录中的文件夹,所以是相对路径“.\XXXXX”:



新加的搜索路径放在最后面可不行,我们点击右下角的向上按钮,把它移到第一位:



其实下面3个路径可以不要,有兴趣的话,可以删掉它们,选中后按右边的红色叉叉按钮就行:



好了,设置Splash窗口了,单选框第一个是无Splash窗口,第二个的Splash窗口是不支持透明通道的,第三个Splash窗口支持透明通道,但是必须jre6以上,然后在下面选择我们那张png图片:



这里没什么可设置的,直接过:



然后就是打包时间,很快的,好不容易才截到图:



之后自动进入这个页面,至此,jar文件已经打包成exe文件了,这里的界面是问你是否保存刚才的操作的:



看,出现了!出现了耶!






好了,教程到此结束,我把素材也上传一下吧,5个附件,分别是Jar2Exe Wizard 1.8、Launch.exe、exe4j、FileMerge.jar、merge.png。


Jar2Exe Wizard.zip
大小:1.28MB 下载:1079次 转存:481次
下载 转存到百度云
Launch.exe
大小:48.50KB 下载:704次 转存:432次
下载 转存到百度云
FileMerge.jar
大小:39.45KB 下载:329次 转存:363次
下载 转存到百度云
merge.png
大小:199.68KB 下载:330次 转存:362次
下载 转存到百度云
exe4j_windows-x64_4_...exe
大小:3.29MB 下载:1332次 转存:559次
下载 转存到百度云

你可能感兴趣的:(Java笔记)