下面的文章是介绍如何将自己编写的swing应用程序打包为.exe的可执行程序,进而编译为.exe的安装程序。相信有这样经历的朋友肯定可以理解我为什么还要将已经编译好的.exe程序更进一步的编译为安装程序,因为一般而言本机打包的是基本不会出现什么问题的,但是一旦拿到服务器上使用或者在其他机器上使用的时候很容易出现jre或者版本问题导致程序不能正常运行,那么最简单的办法就是让程序自己附带jre运行,那样在什么地方运行他都是使用自己附带的jre来运行,这样就可以大大降低故障率了。
需要注意的地方,我当前使用的IDE为MyEclipse8.6,编译环境为jdk1.6,系统编码UTF-8
新建java Project 命名为SwingTest,选择jre为1.6,然后直接finish
在src下建立包com.swing.test
并且在该包下新建类Start
![](https://images0.cnblogs.com/blog/335697/201312/07195433-c7e6ec129677495ea61fa73c363ffb71.png)
然后书写如下代码:
![](https://images0.cnblogs.com/blog/335697/201312/07195541-856be1f477304873bf5b6e1563d9e8d2.png)
然后右键 Run as-------Java Application
![](https://images0.cnblogs.com/blog/335697/201312/07195621-37653e9ec0934a99a08cdf726919b8a8.png)
可以看到,这个简单的例子是可以跑起来的
![](https://images0.cnblogs.com/blog/335697/201312/07195700-ee14c6f38dc2460797b9d17085dc829d.png)
接下来将此项目导出为可执行jar,
在项目名上右键---Export..
![](https://images0.cnblogs.com/blog/335697/201312/07195733-9f8f989b9b534a93842d829def6dabdf.png)
然后选择java--Runnable JAR file 然后选择next
![](https://images0.cnblogs.com/blog/335697/201312/07195818-63a4f414927d4e62b6fb8fc55cc5242c.png)
然后在Launch configuration下选择当前的项目,这里显示的格式是[包含有main函数的类名 - 项目名]
然后在下面选择输出文件夹,这里我们选择Browse..
然后选择桌面,在桌面上新建一个文件夹src1
将生成的可执行jar输出到此文件夹
![](https://images0.cnblogs.com/blog/335697/201312/07195903-187035e0159f4fe392bd2b5e4f9f3971.png)
其他保持不变,finish即可
这个时候src1下面就有了可运行jar文件
=======================
接下来打开exe4j(我的版本是4.5.2,文章末尾我会附加改版本软件下载地址),如果是未注册的话建议注册一下,百度exe4j注册码,然后点击change license,
公司和姓名都可以随便填,将注册码放入最后一行,如果不注册会有讨厌的弹框。
我这里附上一组注册码
A-XVK258563F-1p4lv7mg7sav
A-XVK209982F-1y0i3h4ywx2h1
A-XVK267351F-dpurrhnyarva
A-XVK204432F-1kkoilo1jy2h3r
A-XVK246130F-1l7msieqiwqnq
A-XVK249554F-pllh351kcke50
A-XVK238729F-25yn13iea25i
A-XVK222711F-134h5ta8yxbm0
A-XVK275016F-15wjjcbn4tpj
A-XVK275016F-15wjjcbn4tpj
打开后直接选择Next
这里选择“JAR in EXE" mode
如果选择regular mode会导致最终的结果报java.lang.ClassNotFoundException: com.swing.test.Start
![](https://images0.cnblogs.com/blog/335697/201312/07200131-2eccff78399c498a93fac94440026d85.png)
这里填写本次相对于exe4j的项目名称,随意了,这时在桌面新建文件夹src2
然后这里选择src2,这个是你EXE程序生成的文件夹。
![](https://images0.cnblogs.com/blog/335697/201312/07200215-41ca9252c1764341a7f2a737f641dc89.png)
接下来只需要在Executable name中填写你生成好之后,后缀名为.exe的程序叫什么名字
我这里写Start,即会生成Start.exe
其他均不改动,保持默认,下面的一项Icon File可以定义程序图标,不能将其他图片直接
更改后缀名后选择,必须使用图标软件生成后缀名为ico的文件,或者选择本来就是ico的文件,
这里暂且不选
![](https://images0.cnblogs.com/blog/335697/201312/07200252-ff7bb70b481b4aaca9b06f9c5cd7ec9a.png)
然后点击右侧小加号,
Entry type选择为Archive
Detail选择为src1下面的start1.jar
然后ok
![](https://images0.cnblogs.com/blog/335697/201312/07200337-2136832b45a8461aa6a5e1cd2d62fdd5.png)
在Main class这里栏选择启动类,这里当然是com.swing.test.Start
![](https://images0.cnblogs.com/blog/335697/201312/07200421-47d88428daf54df28389721c758e5e5c.png)
接下来配置程序运行要求最低jre版本和最高jre版本
![](https://images0.cnblogs.com/blog/335697/201312/07200452-bb1ff362caaf4830bbf19304de6c7572.png)
这个时候需要准备一个jre,之所以单独准备jre是为了考虑有些用户点上可能没有jre,
也为了程序具备最高兼容性,所以我们让我们的程序使用自己的jre
将准备好的jre文件夹放入src2文件夹
选择下面的Advanced Options---Search sequence
![](https://images0.cnblogs.com/blog/335697/201312/07200526-fc2718067482440a820f8f560c3a6b82.png)
默认会看到一些配置,将这些配置全部删除,一个都不留
![](https://images0.cnblogs.com/blog/335697/201312/07200555-74462ff7640b45c792277c6345820cab.png)
然后点击右边的加号,
Entry type选择Directory
然后选择src2下的jre7
![](https://images0.cnblogs.com/blog/335697/201312/07200645-324cd088f9ae42ecb13ac74f3f2cc7d6.png)
结果如下
![](https://images0.cnblogs.com/blog/335697/201312/07200709-32cb1137a109400996c15af4c0fcaa7c.png)
然后选择Next--选择VM不管,默认即可--Next--下一个界面继续Next----
![](https://images0.cnblogs.com/blog/335697/201312/07200759-720144596962416dadec804f68b2936f.png)
这个时候再点击next就开始将jar打包为exe了
![](https://images0.cnblogs.com/blog/335697/201312/07200824-651cbf0dcb1044adbb768f70ae7bb7e3.png)
完成后选择exit,弹出的框选NO
![](https://images0.cnblogs.com/blog/335697/201312/07200853-f966a1cbe1df4df7a4b2c22d59b3a8f4.png)
这个时候EXE程序就可以直接运行了,继续下一步
==================
打开 Inno Setup 5(我的版本是5.5.2,文章末尾我会附加该版本的下载链接)
![](https://images0.cnblogs.com/blog/335697/201312/07200953-0f86e292913b4953888adaf4aa9c7f19.png)
选择 下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201017-bb42a3b91fe44bcaa1bf00e34d0d8b1e.png)
这里我只更改了”应用程序名称“为Start,
其他信息随自己喜好,这里暂不更改,选择下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201044-a8e02c010ca54216b4de01f388218286.png)
接下来的这一步不做任何更改,继续选择下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201112-488851f9ebde49ea8c5242ebab7af35c.png)
这一步应用主执行文件选择刚刚生成在src2下的Start.exe, 然后添加文件夹,
选择src2,会询问你是否包含子文件夹,选择是,包含所有文件夹,继续下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201135-b869c128ae6a4873b5d4321ff7db72c4.png)
这里我不做什么更改
继续下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201200-d5e3f7f7a41040efa68ce180a34b1f54.png)
一般程序在安装的时候都会有一些安装提示、或者版权声明,用户同意才继续安装程序,
这里就是用来将你想要显示的信息打包进程序,我在src1下面新建了三个文本文档
1.txt
2.txt
3.txt
里面随便写一句话即可,继续下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201223-3c6c9863900644019ff3f7121f81e0cd.png)
这一步默认不做改变,继续下一步,
![](https://images0.cnblogs.com/blog/335697/201312/07201249-d85400b15e0f4bb38fed29fe0ae1b9ff.png)
在桌面新建文件夹 outexe
然后将编译器输出文件夹选择为outexe
其他不做改变,
对下面三个参数稍作说明:
编译器输出基本文件名,即本次打包后在outexe文件夹中生成的文件名
自定义安装图标,这里跟前面一样,要ico文件,当然你选了就会是你这个图标,如果你不选生成
后的图标也不会是你在exe4j里选的图标
安装密码一般不使用,设置了的话,要想安装本程序就需要输入安装密码
继续下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201312-a04d51ed72654ed58212d379d029abec.png)
这一步默认选中,继续下一步
![](https://images0.cnblogs.com/blog/335697/201312/07201333-54c2df279b76477e954ca522dd74718b.png)
这里选择完成
![](https://images0.cnblogs.com/blog/335697/201312/07201358-90e7c87abe2d4c7997c6262f11b4f533.png)
这里选择是
![](https://images0.cnblogs.com/blog/335697/201312/07201418-f52f5547f09348cda9fcc2bbb473dd29.png)
这里我一般选选择 否
![](https://images0.cnblogs.com/blog/335697/201312/07201441-67cf649d549747d9ba8816b688968ef3.png)
现在就开始打包安装程序了
![](https://images0.cnblogs.com/blog/335697/201312/07201509-ac46a641cfb048d9bff802f302738903.png)
等待一会,安装程序就制作好了,就跟你平时见到的那些安装程序一样。
![](https://images0.cnblogs.com/blog/335697/201312/07201534-9ad7a8523ecc42d780457890d2540014.png)
看到这个说明打包完成,好了,去看看自己制作的安装程序吧!
================================================
PS:
1、JRE的大小一般在80M左右,打完包后大概有20多M,我个人还算是可以忍受,网上有很多精简JRE的教程,
可以尝试精简自己的JRE来缩小最终程序的大小,我比较笨,就不精简了。
2、EXE4J下载地址:http://pan.baidu.com/s/1j9d7a
3、Inno Setup 5下载地址:http://pan.baidu.com/s/1y2kgW