`
haierboos
  • 浏览: 440640 次
文章分类
社区版块
存档分类
最新评论

将Java程序变成可执行文件的简单方法

 
阅读更多
本文为原创,如需转载,请注明作者和出处,谢谢!

launcher下载

运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw -jar my.jar来运行程序(其中my.jar是一个jar文件名,可以是任何指定的jar文件)。但在windows下,用户习惯直接运行一个exe来执行程序。在网上有很多程序可以将my.jar或.class文件直接转换成exe文件。但很多都是将jar或.class文件放到exe里成,这样不太方便。有些工具,如javalauncher可以使用一个exe程序(用c语言写的)来调用jar文件。但有时需要在运行程序之间做些其他的工具,例如,在客户端动态从服务端下载最新版本的程序。因此,在本文将使用delphi2009实现一个简单的可以调用jar文件的程序,读者可以对这个程序进行任何扩展,本文还提供了该程序的源代码和exe文件。
使用delphi建立一个VCL工程。在本程序中不需要form,因此,可以将默认生成的form删除。实际上,我们只需要调用ShellExecute方法就可以通过javaw命令来执行jar文件,代码如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->shellexecute(GetActiveWindow,'open','javaw', '-jar my.jar','',SW_NORMAL);

其中GetActiveWindow方法获得当前窗口的句柄。在本程序中使用了一个config.ini文件来指定要执行的jar文件,实现的完整代码如下:
programlauncher;
uses
Forms,
windows,shellapi,inifiles,sysUtils;

{$R
*.res}
var
ini:tinifile;
JarFile:String;
begin
Application.Initialize;
ini:
=tinifile.Create(extractfilepath(application.ExeName)+'config.ini');
JarFile:
=ini.ReadString('config','JarFile','');
shellexecute(GetActiveWindow,
'open','javaw',PWideChar('-jar'+JarFile),'',SW_NORMAL);
ini.Free;
Application.Run;
end.

在和exe相同的目录下建立一个config.ini文件,内容如下:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->[config]
JarFile
=jars/swt.jar
其中swt.jar文件是执行的jar文件,要放在当前目录的jars目录中。现在的目录结果如下:

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->launcher.exe
config.ini
jars/swt.jar

其中launcher.exe和config.ini也被包含在本文的下载文件中。读者只需要修改config.ini文件中的相应的jar文件名即可。也可以将launcher.exe改成其它的文件名。还有就是要修改launcher.exe文件的图标,可以直接在delphi2009(低版本的delphi也可以,最好7.0以上)中改,也可以找一些编辑二进制资源的程序,直接打开launcher.exe文件,修改其中的图标。

当然,本程序也可以使用任何可生成原生可执行文件的编程语言开发,如C、C++等。

OK,现在就可以通过双击launcher.exe文件来调用jar包了。要想对launcher进行扩展,就直接修改源代码吧。其实这个实现是非常非常地简单!!!


国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

分享到:
评论

相关推荐

    图文解说教你如何把java源代码变成可执行文件exe

    图文解说教你如何把java源代码变成可执行文件exe

    用nsis打jar文件为exe可执行文件的工具

    1、exe4j打包工具主要把jar包打成exe文件; 2、nsis打包工具; 3、打包示例程序。

    本程序分为两个子程序,分别是arpsrc ,arptarget ;arpsrc用来模拟一台主机用来发送一个ARP的询问包,arptarget用来模拟接受ARP包的主机,对不同的ARP询问包进行处理

    本程序分为两个子程序,分别是arpsrc ,arptarget ;arpsrc用来模拟一台主机用来发送一个ARP的询问包,arptarget用来模拟接受ARP包的主机,对不同的ARP询问包进行处理

    Java范例开发大全 (源程序)

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5...

    手机顽童模拟器(在电脑上运行java程序).rar

     程序的使用也很简单,安装好以后(安装的时候可能会出现乱码,不用管它,一直点下一步进行安装)所有的JAR和JAD文件都变成了可执行的图标,直接双击就可以运行了!  MIDPX还具有网络连接功能,只要你的计算机接入...

    Java范例开发大全(全书源程序)

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...

    毕业设计 健身房管理系统 java后端.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    基于java的校园二手交易系统毕业设计.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    毕业设计管理系统java服务端,采用spring mvc.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    基于java web技术的毕业设计商城项目。.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    毕业设计,关于新浪微博API的Java编程..zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    毕业设计基于Cesium时空数据可视化后台Java SSM框架.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    本科毕业设计项目-Java电影推荐系统-管理后台.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    使用Spring Boot的小型诊所信息系统,毕业设计Java版.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    毕业设计---蚁群算法实现vrp问题java版本.zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    Java2核心技术.part5

    第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6体系结构中立 1.2.7可移植性 1.2.8...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    java范例开发大全

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    毕业设计---基于java的软件资源库的实现(后端).zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

    毕业设计--&gt;物流管理系统的设计与实现(java).zip

    Java程序只要编写一次,就可到处运行。 编译和解释性 Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序...

Global site tag (gtag.js) - Google Analytics