J之前写QT的时候也遇到过打包发布的问题,写java代码的时候也遇到了,但是一直没有好的解决办法,这一次终于弄明白如何做了。
此篇博客教你如何方便快捷地把java代码,打包成jar文件以及转换为exe可执行文件。
所需软件
eclipse或Myeclipse
下面有几个可以将JAR打包成exe的软件。
一、exe4j。
说明:exe4j可以将Jar文件制作成exe文件,但需jre支持,也可将Jar文件放在外面。
软件性质:共享软件
下载地址:https://www.ej-technologies.com/download/exe4j/files
二、JBuilder。
说明:新版本的JBuilder可以直接把工程制作成各系统的可执行文件,包括Windows系统。
软件性质:商业软件
下载地址:https://downloads.embarcadero.com/free/jbuilder
三、NativeJ。
说明:与exe4j功能类似。
软件性质:共享软件
下载地址:http://nativej.findmysoft.com
四、Excelsior JET。
说明:可以直接将Java类文件制作成exe文件,除AWT和Swing及第三方图形接口外可不需jre支持(Java5.0不行)。
软件性质:共享软件
下载地址:http://www.excelsiorjet.com/evaluate
五、jshrink。
说明:可将Jar文件打包进exe文件。同时具有混淆功能(这才是它的主要功能)。
软件性质:共享软件
下载地址:http://www.e-t.com/jshrink.html
六、InstallAnywhere。
说明:打包工具,对Java打包最好用。可打包成各操作系统运行包。包括Windows系统。
软件性质:商业软件。
下载地址:http://www.flexerasoftware.com/producer/products/software-installation/installanywhere/
七、InstallShield。
说明:与InstallAnywhere类似,但比InstallAnywhere功能强大。相对的,比较复杂,不易上手,我现在还没学会。
软件性质:商业软件。
下载地址:http://www.flexerasoftware.com/producer/products/software-installation/installshield-software-installer/
具体步骤
Step1:将java项目打包成可执行jar文件
首先看一下我的java project结构,Main.java是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库。
开始打包,Simulate(Java项目)-鼠标右键-Export
弹出窗口,选择“JAR file”,点击“Next”
这里的JAR file只是一般的jar包,不能直接运行,打包成可执行的jar包应该选择Runnable JAR file,有一些小细节可见这里,目前就只有Launch configuration的选择没有明白具体功能是什么。
取消勾选“config”和“lib”目录(有可能根本没有这些文件),以及eclipse生成的项目配置文件“.classpath”和“.project”(这些东西eclipse应该会自动不选),点击“Next”。
一切默认,点击“Next”
在弹出窗口中,可以选择默认,也可以选择我们自己创建的MANIFEST.MF文件,点击“Finish”。
我一般是选择默认
网上别人配置的MANIFEST.MF文件内容为:
Manifest-Version: 1.0
Main-Class: bing.Main
Class-Path: . lib/ojdbc14.jar lib/poi-2.5.1.jar lib/jbcl.jar lib/JTattoo.jar lib/liquidlnf.jar
Created-By: Kun Sun
通过指定“Main-Class”来达到可执行jar文件的目的,见上文bing包内的Main类。
其实我们最终是将项目打包成exe,Class-Path可以不指定,在打包exe的时候还要指定classpath的。
Step2:将项目打包成exe
下面介绍exe4j打包JAR的具体步骤。
这里要明确一点,并不是把所有的文件都打包成一个exe,资源文件是不能包进去的。
首先,在任意目录创建一个文件夹,最好命名和项目名相同,我在F盘创建了一个“Simulate”文件夹,之后将所有的资源文件以及我们生成的可执行jar文件(我的Simulate.jar)都拷贝到这个文件夹里,config目录和lib目录,如果你怕执行该程序的机器上没安装jre,那么你需要将自己机器上的jre目录也拷贝进来,我安装的jre5,最后的目录结构:
打开exe4j,跳过欢迎,直接点击左侧导航的第二项,因为我们已经提前将java项目打包成可执行jar文件了
在弹出窗口,选择“JAR in EXE mode”,点击“Next”
在新窗口中,为我们的应用取个名称,之后选择exe生成目录(我的F:\Simulate),点击“Next”
为我们要生成的exe取名,如果想生成自定义图标,那么选择你的ico文件,如果你不想在一台电脑上运行多个你的程序,你可以勾选“Allow only a single…”,点击“Next”
点击绿色“+”,设置程序运行的Class Path
先选择我们自己的可执行jar文件(我的Simulate.jar),点击OK
我们的Simulate.jar就加到Class Path下了
之后点击General中的Main Class选择按钮,在弹出窗口中,exe4j会自动搜索当前Class Path下的全部jar中包含main方法的类,并列出,因为当前我只选择了自己项目的jar,而我的项目中只有Main.jar包含了main方法,所以一目了然,直接选择它点击“OK”,程序入口类就设置完成了
Main Class设置完成后,依次将所有需要的第三方类库加到Class Path下,方法同添加“Simulate.jar”一样,点击“Next”
输入Java最小Jre版本号,即低于这个版本的Jre无法运行该程序,接着点击“Advanced Options”-“Search sequence”,设置一下我们的JRE,之前说过,如果客户机上没装Jre咋办?,没关系我们捆绑一个进去
点击绿色“+”来选择捆绑的JRE位置(其实也可以不绑定,看具体情况)
在弹出对话框中选择“Directiony”,之后选择JRE的文件夹,注意:这个JRE目录是我们将本机的JRE目录拷贝到当前exe生成目录下的,我的目录是F:\Simulate\jre5,下图程序使用的是相对目录,点击OK,完成JRE的捆绑操作
JRE捆绑完毕,点击“Next”
默认,点击“Next”
默认,点击“Next”
默认,点击“Next”
exe生成中
OK,完成,点击“Exit”即可
看看成果如何吧!
我们的可执行jar以及第三方jar总共还不到5M,可jre5目录就50多M,如果目标机器上有JRE环境就可以把它删掉了,lib目录是第三方jar文件,现已打包到exe中了,所以它也没有存在的理由了,那么最小配置就剩下了“Simulate.exe”和“config”目录了!