倘若说看到标题后, 以为jb真的提供了一种把java应用程序打包成exe文件的主流方法的话, 你会失望的, 下面的一个小技巧只是一个技巧而已。
这个是borland不公开的运用技巧, 能够通过jbuilder来制作exe文件来启动java文件。 jbuilder并不支持本地编译机
制。 但是有一个隐藏的技巧可以让你从可执行文件来启动java程序, 可以出现或者不出现console窗口。 想做到这些, 需要jbuilder的bin目
录下的这些文件:
jbuilder. exe
jbuilderw. exe (可选)
jbuilder. config
jdk. config
javalauncher. dll
“jbuilder. exe”是一个通用的可执行外壳文件, 用以启动java程序, ”jbuilderw. exe“似乎是javaw. exe一
样, 它把”jbuilder. exe”包装起来, 但是运行时候不显示那个console的窗口。 运用这些文件的关键是文件名。
“jbuilder. exe”查找一个文件叫”jbuilder. config”的配置文件, 里面包含了运行java程序的必需信息。 同样
的”jbuilderw. exe”查找”jbuilder. exe”来启动不带console窗口的java程序。 假设把jbuilder. exe重命名
为”foo. exe”, 那”foo. exe”将去寻觅”foo. config”配置文件, 同样”jbuilderw. exe”被重命名
为”foow. exe”, 它会去寻觅”foo. exe”文件。
说到这里, 聪明的读者应该猜到怎样应用jbuilder. exe来启动应用程序了。 只要把
jbuilder. exe, jbuilerw. exe, jbuilder. config改名成相应的文件名, 在jbuilder. config里面指定主
类和类途径, 就能够通过执行jbuilder. exe(或者被改名后的exe文件)来启动java应用程序了。 下面是用本机为例。
borland jbuilder
5被装置在e:\jbuilder5\目录下, 在e:\jbuilder5\bin\下树立一个temp目录, 然后把
jbuilder. exe, jbuilder. config, javalauncher. dll, jdk. config四个文件拷贝
到:\jbuilder5\bin\temp\目录下, 然后在这个目录下树立一个hello目录, 在这个目录下生成一个hello. java文件, 即e:
\jbuilder5\bin\temp\hello\hello. java文件, file://hello. java/package hello;
public class hello{
public static void main(string s[]){
system. out. println("hello, exe file!");
}
}
然后翻开jbuilder. config文件, 作相应的修改:
在jbuilder. config里面找到下面两行
# start jbuilder using the its main class
mainclass com. borland. jbuilder. jbuilder
修改为
# start jbuilder using the its main class
mainclass hello. hello
addpath e:/jbuilder5/bin/temp/
addpath命令是把目录加入类途径中, 这个命令和其它config里面可以辨认的命令可以在jbuilder/bin目录下的
config_readme. txt里面找到详细说明。
然后将jdk. config里面的javapath修改成相对的途径,
记忆枕 例如原来是
javapath . . /jdk1. 3/bin/java
修改成
javapath . . /. . /jdk1. 3/bin/java
最后
将jbuilder. exe, jbuilder. config修改成所需要的文件名, 例如foo. exe和foo. config文件 。
如今执行foo. exe文件
至此, 通过修改jbuilder来运用exe文件启动自己的java应用程序已经完成了。
但是好玩的中央并不在这个中央, 下面的小技巧可能更幽默, 将jar文件打包进入exe文件!
假设应用上面的文件, 生成hello. jar包, 执行过程.
jar cvf hello. jar hello\*. class
将类文件打包成exe文件
然后将jar包附加到jbuilder. exe前面去.
copy /b . . \jbuilder. exe+hello. jar foo. exe
将jar文件转化成exe文件
在foo. config(jbuilder. config)文件里面把前面加入的类途径去掉, 并加入下面的途径:
addpath e:/jbuilder5/bin/temp/foo. exe
然后执行.
看到了么?一个含jar包的exe文件被执行了!
这个过程的大致原理是:exe文件的重要信息都在文件头部, 所以把乱七八糟的东西放exe文件尾部是不要紧的;而jar/zip文件的重要信息
是在文件尾部的, 这样它们两不相干, 能够容 易的被执行。