java+swing打包jar转成exe并动态绑定jre再打包成安装文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java打包jar成exe并动态绑定jre再打包成安装檔

注:以下所有步骤的前提是,把jar文件,ico图示(pngImage文件夹),第三方jar 包(lib活页夹),jre活页夹,放到同一个活页夹中。

本例放在exe4j Install4j Inno setup活页夹下,如图0

如图0

首先,我们选用exe4j把jar执行文件转成exe文件

exe4j.exe下载地址: /download/exe4j/files.html 程序安装不在赘述:

它要求系统有1.5版本以上的JDK,点Download在线下载,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/java.exe就可以进行安装了。

下面就使用exe4j转换jar为exe的过程详细说明一下:

第1步,默认即可。直接下一步

第2步,如果已经有制作好的jar檔,则下面一个"JAR in EXE"。

对于打包jar檔,在eclipse中右击项目选导出即可,不会制作jar檔可以给我留言

如图1

第3步,上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录:

如图2

第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name 写你将要生成的exe檔的名字,Icon File可以选择生成文件的图示

如图3

第5步,首先,单击绿色的"+"号,在弹出的窗口中点Archive,然后找到起初已经做好的jar檔,如图4,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类,如图5,这一步即算完成:

如图4

如图5

第6步,一般的应该程序都要带第三方jar檔,同步骤5一样即可,结果如图6.

第7步,你系统的JRE版本,上面填个1.5,下面不填也行,如图7:

如图7

当然,这样配置的程序只能在安装有JRE的机器上执行,发布时总要考虑的问题就是用户是否有能力在自己机器上安装JRE,总不能发布一个程序还要用户自己安装个JRE吧,下面我就介绍如何将JDK环境变量动态打包到exe 中,在这里单击advanced options(图7中有,如图8),选择search sequence。如图:

如图8

在弹出的窗口中,删除列表中所有项,然后单击绿+,选择directory并选择JRE的根目录(注意是拷贝后的目录)即可,(此步注意,选到jre6檔夹即可),如图9

点打开,结果如图10

如图10

单击ok后,再从图中单击advanced options,并选择preferred VM,在弹出的窗口中选择client hostspot VM(如图11),单击next按钮继续:

如图11

第8步:配置splash screen即exe运行时的过渡接口图,设置如图12

第9步,直接下一步即可,设置如图13

如图13

第10步,编辑完成

点击即可生成exe檔(注意输出目标文件夹中不要有相同的目标exe 文件)

注:exe4j未注册的版本可以在网上随便找个激活码。

java.exe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有JRE,其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。

现在我们的程序可以在任意的计算机上执行了,可是缺点是致命的,比方说我的程序才160K,可是不论走到哪里都要背着70多M的JRE,未免有点小题大做吧,其实作为我们的私有的JRE,好多内容都是可以抛弃的。Jre目录下的license都可以不要,bin下的执行档只需要保留java.exe或者javaw.exe,lib下只要保留rt,jsse,jce,charsets 几个库就可以了。除了i386和zi两个子目录外,其余的子目录都可以不要。Zi下只需要保留自己地区的子目录和其下的一些檔就可以。Lib下除了库之外的属性文件等等都要保留。这样清理一番,JRE仍然有接近50MB。还可以继续清理几个库檔里面不需要的内容,这需要仔细的整理,会很费功夫。最好能写出一个自动工具帮助我们整理它们。从Sun公司上下到的JMF里面附带的用Java写的媒体播放器就自带了JRE,只有几个MB。

清理过后需要运行几遍我们的应用程序,以确保我们的JRE不缺少东西。

整个HtmlFrame2\jre6未压缩前,大约是100M左右,如果把它也放进安排包,那么整个安排包的体积将会很惊人,下面对jre进行精简。

进入jre6目录,jre6目录内,除了bin和lib两个文件夹外,其它所有文件都可以删除;

进入jre6\bin,随便删除一个文件,双击HtmlFrame.exe,如果能运行,那么这个文件就是可以删除的,如果不能运行,就把这个文件还原回去。通过这个方法清理后bin和lib里面的文件,体积大概能减一半。

进入jre6\lib,你会发现rt.jar这个文件,大概40M,这是Java基础类库文件,里面有几千个.class类文件,但其实许多.class在程序里并未使用。先用WinRar解压rt.jar,随便删除rt文件夹里面的文件,再用WinRar把rt 文件夹内的其它文件压缩成一个zip格式文件,把zip后缀改成jar,放回jre6\lib中,双击HtmlFrame.exe,如果能运行,则是可以删除,不能运行,就把类还原回去,再重复上边的操作。这个方法精简jre会比较累,不过这是我目前找到的最有用方法了。

关于精简rt.jar的方法,网上也有一些工具如:GreenJVM等,可以直接精简rt.jar,可以把rt.jar体积减少到3M左右。不过本人用这些工具精简出来rt.jar未试过可以运行,估计是漏掉一些class。

另外可以在dos下使用命令:

java -jar -verbose:class HtmlFrame.jar >>class.txt 把用到的class输出一个txt文件中,再对比进行删除。

网上也有人提供一些精简过的jre,需要的,可以自己上网找下。

其次:用Inno Setup把exe文件和jre打包成安装文件(此处转载的)

一.使用inno setup把整个HtmlFrame程序制作成setup.exe安排包。inno setup是一个免费的、使用非常简单的安排包制作工具,本篇文章使用的是inno setup简体中文版本。有兴趣的,也可以使用其它安装包制作工具。随便提一下另一个专门针对java程序的安装包工具install4j,假如在步骤2中没有给程序指定jre,install4j可以为程序绑定一个jre到安排包中。

本篇使用的inno setup简体中文版本。启动inno setup,选择文件→新建,

第1步,inno setup的脚本欢迎向导

相关文档
最新文档