当前位置:  技术问答>java相关

可执行文件

    来源: 互联网  发布时间:2015-10-01

    本文导语:  java源程序可以做成可执行文件么?如果可以,怎么做呀? | 在以前的帖子里,我搜集到的。 很简单的,在任何.bat中加入: path=d:jdk1.3bin. java -jar your.jar 存盘就行了,我的系统是win2000,我就是这么做的...

java源程序可以做成可执行文件么?如果可以,怎么做呀?

|
在以前的帖子里,我搜集到的。

很简单的,在任何.bat中加入:
path=d:jdk1.3bin.
java -jar your.jar
存盘就行了,我的系统是win2000,我就是这么做的



这个是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”包装起来,但是运行时候不显示那个conso 

le的窗口。使用这些文件的关键是文件名。“JBuilder.exe”查找一个文件叫”JBuilder.c 

onfig”的配置文件,里面包含了运行Java程序的必须信息。同样的”JBuilderW.exe”查找 

”JBuilder.exe”来启动不带Console窗口的Java程序。如果把JBuilder.exe重命名为”foo 

.exe”,那”foo.exe”将去寻找”foo.config”配置文件,同样”JBuilderW.exe”被重命 

名为”fooW.exe”,它会去寻找”foo.exe”文件。 

说到这里,聪明的读者应该猜到怎样利用JBuilder.exe来启动应用程序了。只要把JBui 

lder.exe,JBuilerW.exe,JBuilder.config改名成相应的文件名,在JBuilder.config里面指 

定主类和类路径,就能够通过执行JBuilder.exe(或者被改名后的exe文件)来启动Java应用程 

序了。下面是用本机为例。 

Borland JBuilder 5被安装在E:jbuilder5目录下,在E:jbuilder5bin下建立一个temp 

目录,然后把JBuilder.exe,JBuilder.config,JavaLauncher.dll,jdk.config四个文件 

拷贝到E:jbuilder5bintemp目录下,然后在这个目录下建立一个hello目录,在这个目录 

下生成一个hello.java文件,即E:jbuilder5bintemphellohello.java文件, 

//hello.java 

package hello; 

public class hello{ 

    public static void main(String s[]){ 

        System.out.println("Hello, Exe file!"); 

    } 



编译成class文件,如图18-14: 

图18-14 编译所有java文件 

然后打开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里面可以识别的命令可以在 

JBu 

ilder/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文件 

可以看到执行的结果如图18-15: 

图18-15 执行foo.exe后的运行结果 

至此,通过修改JBuilder来使用exe文件启动自己的Java应用程序已经完成了。 

但是好玩的地方并不在这个地方,下面的小技巧可能更有趣,将Jar文件打包进入exe文件! 

假设利用上面的文件,生成hello.jar包,执行过程和运行结果如图18-16: 

jar cvf hello.jar hello*.class 

图18-16 将类文件打包成exe文件 

然后将jar包附加到JBuilder.exe后面去,执行过程如图18-17: 

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

图18-17 将jar文件转化成exe文件 

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

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

然后执行,执行结果如图18-18: 

foo.exe 

图18-18 变成exe文件的jar文件执行结果 

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

这个过程的大致原理是:exe文件的重要信息都在文件头部,所以把乱七八糟的东西放exe文 

件尾部是不要紧的;而jar/zip文件的重要信息是在文件尾部的,这样它们两不相干,能够容 

易的被执行。 

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

提供官方的支持!


另外可以下载一个叫做Excelsior JET的软件,用jdk1.4配合它的2.5版,可以将.class文件或java的工程转化为.exe文件.有需要的可以找我要,我的qq是
8844755,我的e-mail是:chch771203@163.com.

|
可以,用towerj或者jet工具

    
 
 

您可能感兴趣的文章:

  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 如何让批处理文件执行完毕后窗口不关闭,批处理文件直接点击执行
  • Linux下的执行文件是什么概念,是象Dos里的2进制机器码吗,怎么看一个文件是不是执行文件.
  • 为何XML文件用IE执行后的结果和原文件一样?没有执行?
  • 100请教:如何编写脚本,执行某个目录下的所有可执行文件,并将其输出内容重定向到某个文件。(在线等)
  • redhat7.1下可执行文件不能执行????
  • 数据库 iis7站长之家
  • 菜鸟请教:linux 直接执行可执行文件
  • 我用GCC生成的可执行文件无法直接在shell命令行下执行,这是为什么?可以用调试器调入执行。我用Red Hat7.0
  • 请问: 想让一个执行文件 不写相对路径,在任何路径下,都能执行,该怎么做啊?
  • 如何用JAVA执行本机Linux操作系统的可执行文件?一定给分!在线等待!
  • 用gcc编译完的可执行文件可以双击执行吗
  • centos 6.2编译出来的可以执行文件,无法在cenos 5.8上执行
  • 奇怪的问题?以root用户执行二进制文件被告知不能执行
  • 关于UNIX可执行文件的执行问题
  • 为什么我的可执行文件是rwx的,却还要 加 ./ 才能执行?
  • 怎么写一个Shell来执行这样的功能,访问Oracle数据库,然后执行一个SQL脚本,生成一个文件。急!
  • 请问:我发现如果在/usr/local/bin 与/usr/bin下都有同一个执行文件时,当在shell下执行时,只会执行/usr/local/bin,下的,怎么改过来?
  • 一个可执行文件在它所在的目录执行它,必须这样 ./hello , 直接 hello 就不行???
  • shell文件中执行命令和在提示符下执行有什么区别
  • 为什么我明明用ls命令看到了aaa.sh可执行文件,但当我执行他时,说命令不存在,这是什么原应
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 怎么在一个程序的执行过程中中止执行它?比如一个按钮的响应程序中,执行一半中止??20分!!!
  • linux下通过crond实现自动执行程序
  • 如何实现一个线程组内多线程的非同不执行,即一个线程执行完毕后再执行下一个线程???
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在UNIX下用PRO*C写了个程序,每次执行都得一个多小时,我想把它放到后台执行,也就是我想交给服务器执行,而我想产掉终端窗口,应该怎么做呢
  • linux下不使用sudo命令执行docker的操作步骤
  • C中用system系统调用执行command,执行过程中死锁,如何处理?
  • Mysql Select查询执行流程介绍及实例
  • 在B shell里怎麽执行曾经执行过的命令
  • 请问JSP中的<jsp:forward page=""/>执行后,后边的操作还会执行吗?
  • 执行当前目录下可执行程序时前面必须要加上./才可以,如何解决?
  • 如何在LINUX中在系统启动后自动执行一个执行一个程序?
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • shell 脚本 date 手动执行 和 放在init.d中自动执行的时间不一样
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在程序中执行另外一个程序,并且当前进程依然执行?
  • Applet 是在服务器端执行还是在客户端执行??
  • 直到线程执行完后,才让程序继续执行下去,怎么实现??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3