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

运行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文件,代码如下:
shellexecute(GetActiveWindow,’open’,’javaw’,‘-jar my.jar’,’’,SW_NORMAL);
其中GetActiveWindow方法获得当前窗口的句柄。在本程序中使用了一个config.ini文件来指定要执行的jar文件,实现的完整代码如下:
program launcher;
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文件,内容如下:  
[config]
JarFile = jars\swt.jar
其中swt.jar文件是执行的jar文件,要放在当前目录的jars目录中。现在的目录结果如下:
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进行扩展,就直接修改源代码吧。其实这个实现是非常非常地简单!
来源:疯狂软件http://www.fkjava.org

转载于:https://blog.51cto.com/cfkjava/846568

将Java程序变成可执行文件的一个简单方法相关推荐

  1. 【Java程序员来写一个简单的HTML前端——映纷创意官网】

    官网页面:INFINI | 映纷创意 (infinistudio.cn) 布局分析: 映纷创意.css *{margin: 0;padding: 0; } body{background-color: ...

  2. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  3. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  4. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  5. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  6. 基于列表框的简单选课窗体开发。编写Windows应用程序,设计实现一个简单选课系统,要求:(1)点击“添加”按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加的课程不能为空,不能

    基于列表框的简单选课窗体开发.编写Windows应用程序,设计实现一个简单选课系统,要求: (1)点击"添加"按钮,将把在第一文本框中的输入的课程名称添加到左边的列表框中,且所添加 ...

  7. 提高C++程序运行效率的10个简单方法

    本文以C/C++程序为例讲述了程序运行效率的10个简单方法,分享给大家供大家参考之用.具体分析如下: 对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题.但是程序性能的优化也是 ...

  8. 强制 转换string 的一个简单方法(笔记)

    强制 转换string 的一个简单方法(笔记) //05  eg. //: c05:ToolTest.java // From 'Thinking in Java, 2nd ed.' by Bruce ...

  9. 安装开源在线教育平台edX的一个简单方法

    开放式在线教育平台edX在今年六月份开源,当时按着Google Group中的方法"Clean install on Ubuntu Server 12.04"在一台全新的VPS上安 ...

最新文章

  1. 2022-2028年中国快捷酒店行业市场全景评估及前瞻分析报告
  2. Cornell University Designing with Microcontrollers
  3. oracle netca 乱码,Oracle 11g 安装及netca,dbca乱码之解决
  4. ubuntu卸载_ROS入门笔记(二):ROS安装与环境配置及卸载(重点)
  5. PHP框架性能不权威对比
  6. Hadoop MapReduce手机上网流量统计代码示例及运行结果演示
  7. mongDB批量插值
  8. 解决获取请求参数的乱码问题
  9. 选项卡的制作和注意要点
  10. .iml文件_jetbrains误删maven 项目.iml文件后的处理方法
  11. java gui 线程_如何在java中将消息从工作线程传递给GUI
  12. ZooKeeper(四) 使用Redis RedissonLock 实现分布式锁
  13. ajax同步获得数据字典的值,使用ajax加载数据字典,生成select(示例代码)
  14. SparkStreaming之updateStateByKey
  15. 关于bootstrap和webinf下访问其它文件的方法 2021-04-17
  16. Linux之ssh-agent命令
  17. 2017年网站建设公司现状分析
  18. 科普知识:深网和暗网
  19. 单调栈-leetcode-739. 每日温度
  20. 社交网络叠加直播功能,会产生什么化学反应?

热门文章

  1. nyoj 925 国王的烦恼(最小生成树)
  2. QTP的那些事--通过WMI获取session中的用户信息的验证码
  3. gearman mysql udf
  4. 通配符(WildCard)的使用
  5. 页面 table 可编辑的实现
  6. Wijmo 更优美的jQuery UI部件集:运行时处理Wijmo GridView数据操作
  7. 是什么造成了网管员的低工资?
  8. 谁来担责!无人驾驶汽车还需要汽车保险吗?
  9. python中pygame模块的Linux下安装过程
  10. Maven入门(一)(HelloMaven)