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文件,代码如下:

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进行扩展,就直接修改源代码吧。其实这个实现是非常非常地简单!!!

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

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

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


 

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

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

    将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...

  2. Java程序编译的几个方法(编辑器Notepad++)

    Java程序编译的几个方法 以写好的HelloWorld.java文件为例: 我将这个HelloWorld.java文件放在了: HelloWorld.java文件的内容: 编译的原理就不多说了:(画 ...

  3. 重启java_让Java程序自动重启的实现方法(推荐)

    要让一个java程序自动重启还真不容易的,重启分两步,首先是结束程序,这个简单,只要运行System.exit()就可以了.然后是启动,这个就难了,这个时候程序都已经结束了,就像一个人死了就不可能再自 ...

  4. java程序自动重启_让Java程序自动重启的实现方法(推荐)

    要让一个java程序自动重启还真不容易的,重启分两步,首先是结束程序,这个简单,只要运行System.exit()就可以了.然后是启动,这个就难了,这个时候程序都已经结束了,就像一个人死了就不可能再自 ...

  5. 调优您的 LAMP 应用程序的 5 种简单方法

    John Mertic, 软件工程师, SugarCRM [url=]简介[/url] Wikipedia.Facebook 和 Yahoo! 等主要 web 属性使用 LAMP 架构来为每天数百万的 ...

  6. 防止sql拼接的Java方法,java程序防止sql注入的方法

    12306刚爆出sql注入的漏洞(http://hyfw.12306.cn/hyinfo/action/ClcscxAction_index?cllx=G这个页面,自重输入1'),之前一些关于sql注 ...

  7. java启动提示错误怎么解决方法,java 程序 生成可执行文件exe ,运行出现java exception 错误提示框,解决方法思路...

    最近在写了mina框架的服务端,写完程序在Eclipse环境下运行均是正常的,然后按照之前写的博客 windows环境下将java注册成为开机自启动服务, 生成windows下可执行文件exe格式,按 ...

  8. Cajo,用Java完成分布式计算的最简单方法

    摘自Jonas Boner在2006年5月1日发布在TheServerSide.com上的文章" Distributed Computing Easy"中的介绍部分: 分布式计算在 ...

  9. Java获取键盘屏幕输入简单方法

    在程序开发过程中,我们经常需要从键盘获取输入值,c语言给我们提供了scanf(),C++给我们提供了cin(),但是在java中,并没有给我们提供这样的平台,那我们应该如何实现呢?  以下将列出几种方 ...

最新文章

  1. 苹果小圆点怎么关闭_苹果手机连按2下屏幕,就能自动截图,不知道的来学一学...
  2. TensorFlow安装 通过Anaconda Prompt Win10 64位安装 cpu版 tensorflow
  3. 339所!中国内地高校ESI排名出炉:国科大、清华、北大位列前三!
  4. 想知道数据表的用户或系统异动时间
  5. 从0搭建一个Springboot+vue前后端分离项目(三)使用idea进行页面搭建+Element框架
  6. 潘淳的苏州.NET俱乐部成立有感!附我的录音
  7. OpenGL模板测试通俗理解
  8. html军事学校模板,军事训练学校网站模板
  9. 黑马程序员-面向对象-08天-2 (多态)
  10. 想成长为一名年薪50万+的实战型架构师?必掌握这7大实战技能经验
  11. Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类
  12. 概率论 方差公式_2020考研数学:概率论核心考点与常见题型(上)
  13. 计算机表格列宽怎么设置,excel自动调整列宽在哪?excel中怎么自动调整各行宽度...
  14. 通信工程毕业设计 - 选题推荐
  15. 一篇文章带你读懂批处理命令
  16. c语言return 0和return 1的区别
  17. JeecgBoot关于websocket的改进方案
  18. 教师专业发展规划计算机教师,初中信息技术教师个人发展计划
  19. 裂脑DNS(Split DNS)的那点旧事研究
  20. R语言geodetector包基于栅格图像实现地理探测器操作

热门文章

  1. BZOJ4563[Haoi2016]放棋子
  2. HDU2602-Bone Collector
  3. Python学习笔记《Python核心编程》第4章Python对象
  4. .NET 2.0防止同用户同时登陆实例
  5. 我的第一个ASP类(显示止一篇下一篇文章)
  6. OpenCV三种立体匹配求视差图算法总结
  7. QML自定义IP地址输入框
  8. Linux组管理和权限管理
  9. iOS安全攻防(十七):Fishhook
  10. 通过Exchange online实现HAB功能