题记:最近开发了一个java项目,主要是用java连接硬件进行数据处理,要便利项目的可移植性,就需要打包成exe文件并附加jre文件包,流程:把项目打包成jar—>用exe4j打包成exe文件—》用Innosetup把exe文件与jre文件合为一起成为安装包。也感谢网上提供各种资料的博主,我也把流程贴出来,有需要的大伙可参考。
1,下载安装exe4j与innosetup
可以通过这个exe4j与innosetup地址免费下载,exe4j点击Change License,需要用注册码注册:
L-g782dn2d-1f1yqxx1rv1sqd
2,exe4j把jar包打包成exe文件(按步骤)
2.1 Project type
点击next,projecttype选择“JAR in EXE”mode。
2.2 Application info
点击next,填入应用名称与保存路劲。
2.3 Executable info
填好应用名称与图标后,一定要点击Advanced Options,然后选择32-bit or 64-bit。
然后勾选Generate 64-bit executable,再点击next。
2.4 java invocation
一直点击next后,到了java invocation这个界面,点右边加号–Active–选择需要打包成exe的jar包,右边三点符号选择main函数。
2.5 Configure JRE
点击Allow JREs with a beta version number,然后点击Advanced Options下的Search sequence。
2.6 Configure search sequence
点右边的加号,添加jre包,代表exe程序默认找的jre路径。
2.7 Choose the preferred VM
选择Client hotspot VM,然后一定点击next,最后完成,可看到exe文件已经生成。
3,inno setup合并exe与jre包。
3.1 Application Information
打开inno setup,点击File–>New -->Next,填写应用名称。
3.2 Application Files
一直按next后,到了Application Files这个界面,Browser与Add file都选择exe文件路径。
3.3 Compiler Settings
一直默认,按next,选择保存路径。
3.4文件修改
一直按next,出现文件提示是否要编译,选择否。
在此处添加
#define MyJreName "jre"
在此处修改
Source: "jre路径\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs
3.5 点击运行
安装包生成,在别的电脑用这个安装包安装打开exe文件即可。
exe4j转化出现java.lang.NoClassDefFoundError错误时:
解决方法如下:
如果你eclipse export时选择 Package required libraries into generated jar
在exe4j中就要选 org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 作为main class (注意这是exe4j里的设置,eclipse导出时还是选你原来的main class)
如果你export时选择 Copy required libraries into a sub-folder next to the generated jar
要在exe4j, java invocation中将所有jar添加入class path,这时可以选原来程序里的main class