题记:最近开发了一个java项目,主要是用java连接硬件进行数据处理,要便利项目的可移植性,就需要打包成exe文件并附加jre文件包,流程:把项目打包成jar—>用exe4j打包成exe文件—》用Innosetup把exe文件与jre文件合为一起成为安装包。也感谢网上提供各种资料的博主,我也把流程贴出来,有需要的大伙可参考。

文章目录

  • 1,下载安装exe4j与innosetup
  • 2,exe4j把jar包打包成exe文件(按步骤)
  • 2.1 Project type
  • 2.2 Application info
  • 2.3 Executable info
  • 2.4 java invocation
  • 2.5 Configure JRE
  • 2.6 Configure search sequence
  • 2.7 Choose the preferred VM
  • 3,inno setup合并exe与jre包。
  • 3.1 Application Information
  • 3.2 Application Files
  • 3.3 Compiler Settings
  • 3.4文件修改
  • 3.5 点击运行


1,下载安装exe4j与innosetup

可以通过这个exe4j与innosetup地址免费下载,exe4j点击Change License,需要用注册码注册:

L-g782dn2d-1f1yqxx1rv1sqd

java打包后启动不了找不到类 jar打包exe运行没有java环境_开发语言

2,exe4j把jar包打包成exe文件(按步骤)

2.1 Project type

点击next,projecttype选择“JAR in EXE”mode。

java打包后启动不了找不到类 jar打包exe运行没有java环境_jar包_02

2.2 Application info

点击next,填入应用名称与保存路劲。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_03

2.3 Executable info

填好应用名称与图标后,一定要点击Advanced Options,然后选择32-bit or 64-bit。

java打包后启动不了找不到类 jar打包exe运行没有java环境_jar包_04


然后勾选Generate 64-bit executable,再点击next。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java_05

2.4 java invocation

一直点击next后,到了java invocation这个界面,点右边加号–Active–选择需要打包成exe的jar包,右边三点符号选择main函数。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_06

2.5 Configure JRE

点击Allow JREs with a beta version number,然后点击Advanced Options下的Search sequence。

java打包后启动不了找不到类 jar打包exe运行没有java环境_jar包_07

2.6 Configure search sequence

点右边的加号,添加jre包,代表exe程序默认找的jre路径。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_08


java打包后启动不了找不到类 jar打包exe运行没有java环境_jar_09

2.7 Choose the preferred VM

选择Client hotspot VM,然后一定点击next,最后完成,可看到exe文件已经生成。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_10


java打包后启动不了找不到类 jar打包exe运行没有java环境_java_11

3,inno setup合并exe与jre包。

3.1 Application Information

打开inno setup,点击File–>New -->Next,填写应用名称。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_12


java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_13

3.2 Application Files

一直按next后,到了Application Files这个界面,Browser与Add file都选择exe文件路径。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java_14

3.3 Compiler Settings

一直默认,按next,选择保存路径。

java打包后启动不了找不到类 jar打包exe运行没有java环境_jar_15

3.4文件修改

一直按next,出现文件提示是否要编译,选择否。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java_16


在此处添加

#define MyJreName "jre"

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_17


在此处修改

Source: "jre路径\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs

java打包后启动不了找不到类 jar打包exe运行没有java环境_jar_18

3.5 点击运行

java打包后启动不了找不到类 jar打包exe运行没有java环境_开发语言_19


安装包生成,在别的电脑用这个安装包安装打开exe文件即可。

java打包后启动不了找不到类 jar打包exe运行没有java环境_java打包后启动不了找不到类_20


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