从获得一个TowerJ编译器该编译器可以将你的CLASS文件编译成EXE文件
利用微软的SDKJava 所提供的jexegenexe创建EXE文件这个软件可以从微软的网站免费下载地址如下
jexegen的语法如下
jexegen /OUT:exe_file_name
/MAIN:main_class_name main_class_file_nameclass
[and other classes]
Visual Cafe提供了一个能够创建EXE文件的本地编译器你需要安装该光盘上提供的EXE组件
使用InstallAnywhere创建安装盘
使用IBM AlphaWorks提供的一个高性能Java编译器该编译器可以从下面的地址获得
JET是一个优秀的Java语言本地编译器该编译器可以从这个网站获得一个测试版本
Instantiations公司的JOVE
JOVE公司合并了以前的SuperCede一个优秀的本地编译器现在SuperCede已经不复存在了
JToEXE
Bravo Zulu Consulting Inc开发的一款本地编译器本来可以从该公司的网页上免费下载的不过目前在该公司的主页上找不到了
公司主页
下面这个FTP上曾经有过这个软件不知道现在是不是还在
ftp:///pub/java/tools/jet
jbuilder
这个是Borland不公开的使用技巧能够通过JBuilder来制作exe文件来启动Java文件
JBuilder并不支持本地编译机制但是有一个隐藏的技巧可以让你从可执行文件来启动Java程序可以出现或者不出现console窗口想做到这些需要JBuilder的bin目录下的这些文件:
JBuilderexe
JBuilderWexe (可选)
nfig
nfig
JavaLauncherdll
JBuilderexe是一个通用的可执行外壳文件用以启动Java程序JBuilderWexe好像是javawexe一样它把JBuilderexe包装起来但是运行时候不显示那个console的窗口使用这些文件的关键是文件名JBuilderexe查找一个文件叫nfig的配置文件里面包含了运行Java程序的必须信息同样的JBuilderWexe查找JBuilderexe来启动不带Console窗口的Java程序如果把JBuilderexe重命名为foo
exe那fooexe将去寻找nfig配置文件同样JBuilderWexe被重命名为fooWexe它会去寻找fooexe文件
说到这里聪明的读者应该猜到怎样利用JBuilderexe来启动应用程序了只要把JBuilderexeJBuilerWexenfig改名成相应的文件名在nfig里面指定主类和类路径就能够通过执行JBuilderexe(或者被改名后的exe文件)来启动Java应用程序了下面是用本机为例
Borland JBuilder 被安装在E:\jbuilder\目录下在E:\jbuilder\bin\下建立一个temp目录然后把JBuilderexenfigJavaLauncherdllnfig四个文件拷贝到E:\jbuilder\bin\temp\目录下然后在这个目录下建立一个hello目录在这个目录下生成一个hellojava文件即E:\jbuilder\bin\temp\hello\hellojava文件
file://hellojava/
package hello;
public class hello{
public static void main(String s[]){
Systemoutprintln(Hello Exe file!);
}
}
编译成class文件然后打开nfig文件作相应的修改
在nfig里面找到下面两行
# Start JBuilder using the its main class
mainclass comborlandjbuilderJBuilder
修改为
# Start JBuilder using the its main class
mainclass hellohello
addpath E:/jbuilder/bin/temp/
addpath命令是把目录加入类路径中这个命令和其它config里面可以识别的命令可以在JBuilder/bin目录下的config_readmetxt里面找到详细说明
然后将nfig里面的javapath修改成相对的路径例如原来是
javapath /jdk/bin/java
修改成
javapath //jdk/bin/java
最后
将JBuilderexenfig修改成所需要的文件名例如fooexe和nfig文件
现在执行fooexe文件
至此通过修改JBuilder来使用exe文件启动自己的Java应用程序已经完成了
但是好玩的地方并不在这个地方下面的小技巧可能更有趣将Jar文件打包进入exe文件!
假设利用上面的文件生成hellojar包
jar cvf hellojar hello\*class
然后将jar包附加到JBuilderexe后面去
copy /b \JBuilderexe+hellojar fooexe
在nfig(nfig)文件里面把前面加入的类路径去掉并加入下面的路径
addpath E:/jbuilder/bin/temp/fooexe
然后执行fooexe
看到了么?一个含jar包的exe文件被执行了!
这个过程的大致原理是exe文件的重要信息都在文件头部所以把乱七八糟的东西放exe文件尾部是不要紧的而jar/zip文件的重要信息是在文件尾部的这样它们两不相干能够容易的被执行
请注意读者如果使用这个功能得自己承担可能带来的风险因为Borland对这个功能不提供官方的支持!