End

几种 jar 转 exe 的方法

本文地址


目录

几种 jar 转 exe 的方法

exe4j

参考文章

感受:最后生成的是一个文件夹,其中有jre,jar,exe,exe文件不能离开这个文件夹否则无法使用。
原理:应该是告诉电脑jar在哪,jvm在哪。

Inno Setup

参考文章:同上。
感受:就是把exe4j生成的文件夹做了一个安装包,然后通过这个安装包安装,感觉挺好玩,但是不现实,一个安装包中有jre,所以很大。

jsmooth

参考文章

感受:可以生成独立的exe文件,但是无法在没有jre的机器上运行,文中所说的捆绑jvm也没有实现。
原理:琢磨着像,把jar打进exe,同时告诉电脑jvm在哪。

GreenJVMMake

参考文章

感受:通过上面可以知道jar转成exe的大小和jre直接相关,所以想到了精简jre大小,自己琢磨了半天发现基本上有用的九个rt.jar,所以准备精简rt.jar,使用这个软件可以做到,做到之后结合exe4j会报错,该文给出的方案和exe4j + Inno Setup相似,但是到了这一步:

没办法,我们制作一个完整调用pack类库的小程序,而后以此生成仅有依赖库的rt.jar,合并打包进自定义的rt.jar中,再次运行程序。OK,通过了。

不知道pack类库是个什么,所以也没法进行下去。

原理:精简jre,然后将jre和jar,以及可以告诉电脑jar和jvm在哪的一个exe放一起

Java应用定制工厂

参考文章

使用体验:软件八年没更新了,根本运行不了!

感受:比上面的GreenJVMMake好用很多
功能有:精简jre、将精简的jre和jar生成exe

其中精简有两种模式,一是仅仅包含运行时用到的类,这种精简后jre很小;另一种是包含运行时用到的类和其依赖的所有类,这种精简后jre稍大,但是出错少。

原理:将jre精简,然后将jre、jar放到一个文件夹,生成exe,告诉电脑jar和jvm在哪,exe也是不能脱离这个文件夹。

JarToExe

使用体验:生成exe后运行不了,提示"Java运行环境未找到"。

使用案例:

Jar2Exe 界面使用说明

官方文档

第一步:选择 JAR 文件

  • 请输入 JAR 文件或者 classes 目录:输入 jar 文件的全路径或者输入包含 .class 文件的 classes 目录。
  • 浏览 JAR ...:弹出打开文件对话框,浏览 jar 文件。
  • 选择目录 ...:弹出目录选择对话框,选择 classes 目录。
  • 运行时提示用户最低要求的 JRE 版本:生成的 exe 文件运行时,如果 JRE 环境低于这个版本,则会显示版本太低的提示。

第二步:选择程序类型

  • 控制台程序:生成的 exe 文件运行时控制台是可见的,适合用来运行需要控制台输出的程序。
  • Windows 窗口程序:生成的 exe 文件运行时控制台不可见,适合用来运行显示窗口的程序。
  • Windows NT 服务:生成的 exe 可以作为 Windows NT 服务程序运行,系统启动时,不登录用户就可以后台启动服务。软件未注册时,试用期生成的 Windows NT 服务程序会不定期自动停止服务,仅作为演示之用。

第三步:设定主启动类

  • 请输入开始运行的主启动类:带有 main() 方法的 java 类全名,比如 test.Hello 。点击 "选择..." 按钮可以通过树结构选择。
  • 选择...:弹出类选择对话框,采用树结构选择主启动类。

 

  • 请输入 Windows NT 服务名:如果在前一页选择 "Windows NT 服务" 类型,则本配置项将出现。输入唯一标识本服务的服务名。可点击 "设定" 按钮,设定其他服务参数。
  • 设定:设定服务的详细参数。

  • 服务描述:Windows NT 4.0 不支持服务描述,因此如果服务安装在 Windows NT 4.0 上,服务描述将被忽略。
  • 依赖的服务:通过 "/" 分隔依赖的服务的服务名。

第四步:设定选项

  • 启用任务栏图标:启用生成的 exe 提供的任务栏图标功能。如果可执行文件类型为 Windows 服务,则此功能不可用。转到 技术支持页 下载开发接口。
  • 启用记录系统日志:启用生成的 exe 提供的记录系统日志功能。转到 技术支持页 下载开发接口。
  • 隐藏 class 文件:使生成的 exe 不可以通过解压获取被保护的 class 文件。
  • 加密并隐藏 class 文件:使用更复杂的算法对 class 进行隐藏保护。

第五步:设定依赖的其他 jar

  • 添加所依赖的其他 jar 文件:生成的 exe 可以将依赖的其他 jar 文件一同包含在 exe 文件中。
  • 添加...:弹出打开文件对话框,选择 jar 文件。
  • 保护:如果前一页选择了 "隐藏" 或者 "加密并隐藏" ,则保护按钮将可用。选择 "保护" 后的 jar 文件,将同主 class 文件一样被隐藏保护。
  • 删除:删除列表框中选定的 jar 文件。
  • 设定 classes 目录过滤:如果在第一页选择的是一个目录用来生成 exe ,则此 "过滤" 功能将显示。

用来与通配符匹配的文件名是基于 classes 目录的相对路径。能够与输入框中设定的通配符匹配的文件,将不被包含到生成的 exe 中。多个通配符使用半角逗号分隔。

通配符规则:

**  -  任意层次的目录和文件
*   -  不能跨层次的任意目录名或文件名(即不包含 "\" 和 "/" )
?   -  任意单个目录名或者文件名字符(即不包含 "\" 和 "/" )

比如:

*.bak  -  将过滤掉 classes 根目录下扩展名为 bak 的文件。
**\*.bak  -  将过滤掉所有目录下扩展名为 bak 的文件。
**\CVS\*  -  将过滤掉所有目录下的 CVS 目录内的文件,但不包含 CVS 下的子目录内的文件。
test\**  -  将过滤掉 test 目录下所有目录层次的文件。

第六步:选择生成的 exe 文件名

  • 请输入要生成的 exe 文件名:输入将生成的 exe 全路径文件名。
  • 浏览...:弹出文件对话框,选定要生成的 exe 文件名。
  • 图标及版本:弹出修改生成的 exe 的程序图标及版本信息的对话框。
  • 生成的 exe 不允许被修改:如果选定,生成的 exe 将不允许被再修改。如果未选定,生成的 exe 可以用其他工具进行修改资源,再次加密等。

2016-04-22

posted @ 2016-04-22 21:55  白乾涛  阅读(5294)  评论(0编辑  收藏  举报