windows下打包java程序为带jre的可执行文件
在这个制作过程中主要利用了Borland不公开的使用技巧,就是能够通过JBuilder来制作exe文件来启动Java文件。 (在网上可以查到具体的文章,可以见---JBuilder9制作EXE文件--)
JBuilder并不支持本地编译机制。但是有一个隐藏的技巧可以让你从可执行文件来启动Java 程序,可以出现或者不出现console窗口。需要JBuilder的bin目录下的这些文件: JBuilder.exe JBuilderW.exe JBuilder.config jdk.config 。“JBuilder.exe”是一个通用的可执行外壳文件,用以启动Java程序,"JBuilderW.exe"好像是javaw.exe一样,它把"JBuilder.exe"包装起来运行时候不显示那个conso le的窗口。使用这些文件的关键是文件名。"JBuilder.exe"查找一个文件叫"JBuilder.config"的配置文件,里面包含了运行Java程序的必须信息。
同上,先将JBuilder的bin目录下 JBuilder.exe,JBuilderW.exe,JBuilder.config,jdk.config 这三个文件拷贝到一个新文件夹中,我的是importdata。此外还有一个文件是 config_readme.html 也拷贝出来 ,这个文件说明了修改配置文件的一些参数语法。
然后再找安java的主目录下的jre文件夹,将jre文件一并拷贝到 importdata 中,然后再找lib文件夹下的tool.jar文件拷贝到 importdata/jre/lib中(最安全的办法就是将java的主目录下lib的全部内容都拷贝到importdata/jre/lib)。如果还引入了其他的类库一并将那些类库的*.jar 文件拷贝到importdata/jre/lib中。这样java的运行环境就有了。
将你做的程序生成.jar包,执行过程:
jar cvf importdata.jar importframe/*.class
importframe是我编译好的.class文件所在的文件夹,打包为importdata.jar 文件
接下来就是修改配置文件。(用文本编辑器打开jdk.config和JBuilder.config)
jdk.config 修改
查找 javahome ../jdk1.5/ 改为 ./jre/
查找 addpath ../jdk1.5/lib/tools.jar 改为 ./jre/lib/tools.jar
其他不需要更改
JBuilder.config 修改
# Add any configuration files located in the patch directory
includedir ../patch
如果这句保留 这句的话则将 includedir ../patch 改为 includedir ./patch 并在当前目录中建一个 patch 文件夹;不保留则 在includedir ../patch加 #。(A comment can be added using the "#" sign: # This is a comment )
# Enable peer to peer debugging
addpath ../lib/jdi-extension.jar
# Enable HotSpot Serviceablity Agent
include sa.config
这两行删掉或注释掉(加#)
加入 addpath ./importdata.jar 即加入打包的importdata.jar 文件(必须)
查找 # Make sure that DLL's in the lib directory also get picked up
addlibpath ../lib
改为addlibpath ./jre/lib
查找
# Add all JAR files located in the patch, lib and lib/ext directory
addjars ../patch
addjars ../lib
addjars ../lib/bes
addjars ../lib/servers
addjars ../lib/p2p
addjars ../lib/ext
改为
# Add all JAR files located in the patch, lib and lib/ext directory
addjars ./jre/lib
addjars ./jre/lib/ext
addjars ./jre/lib/im
addjars ./jre/lib/security
如果前面时候你保留了includedir ./patch 则在这边加入 addjars ./patch
最后 查找
# Start JBuilder using the main class
mainclass com.borland.jbuilder.JBuilder
改为
# Start JBuilder using the main class
mainclass importframe.ImportData
这句话是确定要java执行时的开始类的位置mainclass,我这得程序为importframe.ImportData为主程序。
其他的也可以改 也可以不改。具体的语法见config_readme.txt的详细说明(建议将没用的去除)。
如何利用JBuilder.exe来启动应用程序?只要把JBuilder.exe,JBuilerW.exe,JBuilder.config改名成相应的文件名,在JBuilder.config里面指定主类和类路径,就能够通过执行JBuilder.exe(或者被改名后的exe文件)来启动Java应用程序了。
我这里将 JBuilder.exe和JBuilderW.exe改为import.exe,importw.exe 相应的配置文件改为JBuilder.config改为import.config
到此为止 ,你可以双击importw.exe 开启你的java程序了。此时你可以将做好的程序放到没有java运行环境的机器上试试。是不是大功告成了?如果没成功可以在命令窗口运行import.exe看看是什么错误然后修改配置文件就可以了。
最后要说一点就是修改那个importw.exe 的图标。做好一个程序不能还用JBuilder的图标 那样多不爽阿 ,要修改只能借助其他的软件了,我推荐一个叫ResHacker软件。
下载地址http://www.angusj.com/resourcehacker/
具体用法见帮助 据说这款软件很牛。
下载自己想要的图标,利用来替换importw.exe或import.exe图标。
我感觉运行这两个文件也没多大的区别。
到此为止了,就这样就配置好了一个带jre的可执行文件。
如有什么问题,可以留言 。一起讨论一下!