对于作Java桌面应用来说,比較烦人的就是安装部署问题。client是否安装有jre、jre版本号问题、jre去哪下载、怎样用jre启动你的Java应 用?不要说刚接触电脑的人,就算是比較熟悉电脑,假设没有接触过Java,面对一个Java应用,怎样在Windows下启动它,预计都会折腾半天。假设 不是由于这个问题。Java在我的眼里算是最完美的语言了,也是我最喜爱的语言。
    所以我觉得这个是导致Java桌面应用被一些人所讨厌的最大原因,Java的优势是“一次编写。随处执行”,跨平台特性确实非常好,但并非每一个人都须要或都想要跨平台,并且有时候JVM平台或版本号问题也会造成“一次编写,到处測试”的尴尬。
    最好的方式莫过于带着JRE,让用户轻松点击就能执行。

以下我们来解决这种问题。有什么好的建议或方法请其它朋友多多不吝赐教或补充!
    针对windows平台。让用户一键式安装,双击使用, 使用工具exe4j + Inno Setup, 这两个工具都能够在网上找到,不熟悉的能够多搜搜,使用起来也不难。
    带着JRE执行。JRE的大小应该是最让人头疼的,我默认安装的jre6大小达到80M,而程序仅仅有200-300k左右。感觉非常不合理,分发与网络传 输过程也会大受影响!

为了解决问题我一直在网络上搜索“瘦身版”的JRE,无意中搜到了Beansoft老师介绍的一篇关于迷你JRE的文章,相关的 JRE下载后解压约14M左右,试用了一下,相对于我的应用缺少了一些类文件,关于部分xml操作类。及swing桌面应用框架相关连的部分类也找不到, 最后借鉴了一下,自己把一个完整的JRE从80M瘦到了38M。去除了非常多不须要的类文件。当然。假设耐心一点还能够再瘦下去。再抽掉一些类文件。
    在这个基础上再配合Inno Setup这个安装包制作工具,最后把整个程序从40M压到了8M,以下看看关于整个操作过程,关于JRE的瘦身有些烦琐就不写了,并且SUN的JRE瘦身计划也在进行,相信非常快会有更小的瘦身版JRE推出,自己没有必要再去费神。
    
    以下是我的一个完整的Java程序 —— MyLoading
   

exe4j 给jar打包exe文件_桌面应用

能够看到已经附带了jre1.6 , 以下先使用exe4j给它制作一个exe运行文件(即上图的MyLoading.exe)。并指定我们自带的jre1.6 。

以下是exe4j的启动界面,点击下一步開始创建配置文件。

   

exe4j 给jar打包exe文件_桌面应用_02

接着选择类型,我们选择第一个。这样能够保证程序仍具有跨平台的特性。假设选择第二个,能够把程序全然编译成exe文件,能够更好的保护你的程序不被反编译。


exe4j 给jar打包exe文件_环境变量_03

接下来设置你的程序的短文件名称,源文件夹路径(如我的:E:\MyLoading),以及要生成的exe文件的存放文件夹,exe存放文件夹必须指定到源文件夹下。这里我把它指定为E:\Myloading的根文件夹下。
exe4j 给jar打包exe文件_java_04

接下来,能够给我们即将生成的exe文件起一个名字,如我的“MyLoading”。还能够给它指定一个ico类型的图标,其他按默认就能够了,如图:
exe4j 给jar打包exe文件_跨平台_05

接下来的这一步,我们须要把程序中所用到的类路径加入上去。

然后指定程序的启动类。其他假设没有必要的话,则按默认就可以。点击+号加入类路径:

exe4j 给jar打包exe文件_安装包_06

基本上你所须要用到的Jar文件都要加入上去,能够逐个加入上去,也能够加入整个目录或者使用系统环境变量。为了使你的程序能够随处执行,所以还是强列 建议你使用相对路径,而且不要使用环境变量。

加入好你的类路径之后回到上一步去选择好你的"Main Class"就可以。


exe4j 给jar打包exe文件_跨平台_07

接下来先选择我们的程序所须要的jre版本号。 然后便是选择我们自带的jre了,这一步不是必须,可是为了更好的分发程序,我们自带了jre, 所以必须把我们自带的jre指定为首选的执行环境,如图选择:
Search sequence
exe4j 给jar打包exe文件_环境变量_08

默认情况下程序会去系统的注冊表。环境变量及相关的文件夹查找jre,由于我们仅仅须要自带的jre,所以这里我把默认的选项移除了。然后加入我们自己的jre所在的文件夹路径。点+号開始:
exe4j 给jar打包exe文件_java_09

这里还是建议使用相对的文件夹路径:
exe4j 给jar打包exe文件_跨平台_10

指定jre所在的文件夹。如图:
exe4j 给jar打包exe文件_环境变量_11

最后我的jre文件夹路径就是这种:.\jre1.6
exe4j 给jar打包exe文件_安装包_12

以下这一步仅仅是简单的给程序加入一个启动画面,然后按默认下一步下一步就能够了。
exe4j 给jar打包exe文件_桌面应用_13

程序终于生成了这个运行文件: MyLoading.exe
如今使用它,已经能够正常利用我们自带的jre启动程序了,可是整个程序仍有40M的大小.
如今我们使用Inno Setup进行压缩并制作一个安装包。
exe4j 给jar打包exe文件_环境变量_14

Inno Setup的下载安装请到网上搜索。安装后启动脚本向导,如图所看到的:
exe4j 给jar打包exe文件_桌面应用_15

整个过程非常easy:
exe4j 给jar打包exe文件_java_16

这里指定你的程序的启动文件,即刚才用exe4j创建的exe文件,并将你的整个程序文件夹都包括进去就能够了,接下来的基本上一直按下一步就能够了。直到脚本向导完毕,
exe4j 给jar打包exe文件_环境变量_17

exe4j 给jar打包exe文件_安装包_18

然后运行该脚本就可以:

exe4j 给jar打包exe文件_安装包_19

exe4j 给jar打包exe文件_跨平台_20

然后找到Inno Setup的默认输出文件夹。就能够看到编译输出后的安装包了,例如以下图:MyLoading安装.exe
大小已经压到了8.86M。
exe4j 给jar打包exe文件_java_21

利用这个就能够高速轻松的安装你的Java桌面应用了。


exe4j 给jar打包exe文件_桌面应用_22