当我们希望将java编写的可执行文件.jar打包为一个.exe供用户直接使用,我们需要将jre/jdk也打包到exe中,这样用户环境就不需要安装jdk,直接运行我们做好的exe文件。
整个过程分为两步,为了方便演示,这里使用JMonkeyEngine SDK打包一个jme3游戏的方式来解释。
工具
首先下载这里的工具:
链接:https://pan.baidu.com/s/1YYxKFaT-t0gOUFVVVI2-Lw
提取码:1wpc
解压后可以看到一个exe4j9的文件夹,将其放到你需要的目录中,然后进入exe4j4/bin目录,找到exe4j.exe,启动后填写如下内容:
姓名和公司可以随便填,许可证密钥填:L-g782dn2d-1f1yqxx1rv1sqd,这样就可以破解,不破解的话,你打包的exe启动会有对话框。
然后安装百度云下载文件中的innosetup工具。
创建jar可执行文件
这里我制作了一个jme3游戏,如下:
这里我使用的是jdk8进行编译(因为我需要同时编译出android包体,而jme3的核心库我使用的是jdk8进行编译生成的android.jar或以下版本):
右键CleanAndBuild即可生成最新的jar可执行文件和对应的apk:
进入对应目录,这里就可以看到编译出来的可执行文件jar和对应的未签名的apk文件,apk用java生成一个密钥进行签名就可以安装到android上使用了(这里我们不关心apk):
启动后jar后(注意,不要使用loadModel(".xml")这种格式,解析xml的插件要求jdk11,编译后与运行环境jdk8存在代码兼容性问题,统一转换为j3o):
一切正常后,进入下一步。
使用exe4j生成exe
打开exe4j,以此如下:
Short name of your application为打包exe的名字,Output directory为生成exe所在目录:
Icon可以不填(这是exe文件的显示图标),Executable name为启动exe后显示的名称:
这里可以填exe的一些展开信息(就是你鼠标浮动到.exe文件时会显示的详细信息):
然后这里如果你捆绑的是64位jdk则选择64位,否则选择32位:
接下来一步很重要,如下:
点击+号,添加jar可执行文件:
注意,到这里之后,还未结束,因为此时我们只添加了TestGame2.jar这个jar包:
而Jme3游戏将其他依赖包放在了lib文件夹中:
我们需要依此重复上面步骤,把lib文件夹中的.jar都添加进来,如下:
然后选择Main class from,选择我们的启动类:
下一步配置jdk最小最大版本:
然后接下来点击这个:
我们需要删除这三项默认的:
如下:
然后依次如下:
写死固定名字为.\jre相对目录(因为我们需要把jdk/jre复制到exe同一目录中)。
然后Preferred VM选择Client HotSpot VM:
然后你可以添加一个闪屏页面(即启动exe时的一个启动界面闪屏):
你还可以添加一些对exe的描述:
然后一路点下一步就行了,最后到这个页面后,建议点击Save As,将配置导出(下次对这个相同的jar进行反复打包exe就可以直接打开这个配置文件导入exe4j中了,不用重复配置所有步骤):
这里保存了配置:
导入方法就是:
如下就是我们生成的exe,此时你启动exe会报错:
因为我刚刚配置了exe读取相同目录下的jre目录下的vm作为运行环境,这一步很关键,通常jdk8安装后目录下会有一个jre:
如果你是jdk8以及以下版本,可以直接复制这个jre到exe相同位置处,即可启动exe:
如下:
如果你是jdk11以及以后版本,安装后是不会有jre的,你通过命令行生成的jre也是有问题的,此时需要直接把整个jdk11复制到exe目录中,然后改名为jre即可。
使用InnoSetup将exe和jre打包为安装包体
如果你只是使用exe4j生成exe,则你需要复制jre和exe给玩家,我们希望直接给玩家一个exe安装包,这个安装包安装后就包含了jre,此时我们需要InnoSetup,这个工具是用来生成一个exe安装包的,打开InnoSetup工具,新建一个脚本:
依次填安装包相关信息:
然后点下一步:
然后选择我们的主程序(也就是exe4j生成的.exe):
然后添加jre文件作为安装包的一部分,这里需要注意,我们希望安装后TestGame2.exe和jre文件夹在同一个目录中,但是如果我们直接添加jre文件夹,则会导致添加的是jre里面的文件以及文件夹,所以我们需要随便弄一个文件夹,把jre放到里面,如下:
temp文件夹包含jre文件夹:
然后添加temp文件夹:
然后点下一步:
然后一直点下一步,到这个界面,可以添加一些安装时的许可描述(可以忽略,直接下一步):
然后保持默认选项继续下一步:
添加你需要的语言,继续下一步:
然后选择exe安装包生成目录和图标相关信息:
然后下一步保持默认选择点击下一步并点击完成生成脚本:
这样就会生成脚本,生成脚本后默认会弹出是否立即编译脚本,编辑脚本的意思就是生成安装包体,点击否:
你可以通过手动编辑脚本来修改刚刚GUI可视化配置过程中的一些选项,确定没问题后,点击这个按钮编译脚本:
生成安装包后默认会进行安装,点击取消:
查看安装包体,这就是我们生成的:
你可以直接把这个安装包体发给玩家,玩家不需要安装任何jdk,直接点击安装exe就可以玩你制作的java游戏了。
优化
虽然最后生成的安装包体压缩成了66MB,但是其中jre占了很大空间,所以我们可以根据jre瘦身法把jre中不需要的东西手动删除进行瘦身,减少安装包exe的大小。
标签:jre,exe,windows,jar,生成,文件夹,安装包 From: https://www.cnblogs.com/JhonKkk/p/18287164