使用Launch4j将Jar转Windows Exe遇版本兼容问题求助
问题原因与解决办法
错误原因
你遇到的UnsupportedClassVersionError是版本不兼容导致的:
- 类文件版本
61.0对应Java 17,说明你的test.jar是用Java 17或更高版本编译的。 - 报错里的JRE仅支持到
52.0(对应Java 8),也就是Launch4j实际调用的是你放在同目录的Java 8 JRE,和Jar的编译版本不匹配。 - 直接运行Jar没问题,是因为你执行
java -jar时用的是系统环境变量里的高版本Java(≥17),和Launch4j调用的JRE不是同一个。
解决办法
方案一:升级同目录的JRE版本
- 下载与Jar编译版本匹配的JRE(比如Java 17,因为类文件版本61.0对应Java 17)。
- 删除当前同目录下的
jre文件夹,将下载的JRE解压后重命名为jre,放在Test.exe同目录。 - 修改Launch4j的JRE设置:
- 最低JRE版本改为
17(或更具体的版本号如17.0.0)。
- 最低JRE版本改为
- 重新生成Test.exe,运行即可。
方案二:降级Jar的编译版本(如果代码兼容Java 8)
- 打开你的Java项目,在IDE中设置编译参数:
- 源码版本(Source)设为
1.8。 - 目标版本(Target)设为
1.8。 - 确保项目中没有使用Java 8以上的API。
- 源码版本(Source)设为
- 重新导出可运行Jar文件。
- 用Launch4j重新打包,保持原有的Java 8 JRE配置即可正常运行。
额外注意事项
- 确认Launch4j的JRE路径配置正确:同目录的
jre文件夹结构要完整,必须包含bin/java.exe。 - 定时运行建议用Windows任务计划程序:直接创建任务,设置每天11点执行Test.exe,可配置工作目录、运行权限,比批处理脚本更稳定可靠。
内容的提问来源于stack exchange,提问作者Ariel
相关产品推荐
相关产品推荐

