EXE程序是怎么生成的?

EXE程序是怎么生成的?,第1张

linux和unix下面的执行文件可以是任何的扩展名,但是他们都是不能在windows环境下执行的。所以,你要生成exe,应该是要生成在windows下能执行的exe,那么就应该用windows下面的c编译器,比图turbo C或者Visual C++。当然,如果你足够强,也许可以在unix下使用gcc的交叉编译编译成windows的exe。

有人把java和javascript都分不清了,呵呵。在大学时学过一点,全忘了,晕。

将Java应用程序本地编译为EXE的几种方法

1. 从www.towerj.com获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。

2. 利用微软的SDK-Java 4.0所提供的jexegen.exe创建EXE文件,这个软件可以从微软的网站免费下载,地址如下:

http://www.microsoft.com/java/download/dl_sdk40.htm

jexegen的语法如下:

jexegen /OUT:exe_file_name

/MAIN:main_class_name main_class_file_name.class

[and other classes]

3. Visual Cafe提供了一个能够创建EXE文件的本地编译器。你需要安装该光盘上提供的EXE组件。

4. 使用InstallAnywhere创建安装盘。

5. 使用IBM AlphaWorks提供的一个高性能Java编译器,该编译器可以从下面的地址获得:

http://www.alphaworks.ibm.com/tech/hpc

6. JET是一个优秀的Java语言本地编译器。该编译器可以从这个网站获得一个测试版本:

http://www.excelsior-usa.com/jet.html

7. Instantiations公司的JOVE

http://www.instantiations.com/jove/...ejovesystem.htm

JOVE公司合并了以前的SuperCede,一个优秀的本地编译器,现在SuperCede已经不复存在了。

8. JToEXE

Bravo Zulu Consulting, Inc开发的一款本地编译器,本来可以从该公司的网页上免费下载的,不过目前在该公司的主页上找不到了。

公司主页: http://www.bravozulu.com/

下面这个FTP上曾经有过这个软件,不知道现在是不是还在:

ftp://race.dlut.edu.cn/pub/java/tools/jet

9.jbuilder

这个是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四个文件拷贝到E:\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!")

}

}

编译成class文件,然后打开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

然后将jar包附加到JBuilder.exe后面去,

copy /b ..\JBuilder.exe+hello.jar foo.exe

在foo.config(JBuilder.config)文件里面把前面加入的类路径去掉,并加入下面的路径:

addpath E:/jbuilder5/bin/temp/foo.exe

然后执行,foo.exe

看到了么?一个含jar包的exe文件被执行了!

这个过程的大致原理是:exe文件的重要信息都在文件头部,所以把乱七八糟的东西放exe文件尾部是不要紧的;而jar/zip文件的重要信息是在文件尾部的,这样它们两不相干,能够容易的被执行。

请注意:读者如果使用这个功能,得自己承担可能带来的风险,因为Borland对这个功能不提供官方的支持!

还可以去看看 http://www-900.ibm.com/developerWor...ive/index.shtml这是一篇分析的文章,但它提供了很多有用的资料。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11257066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存