运行Maven JLink插件遇Unsupported class file major version 61错误求助
解决Maven JLink插件报
Unsupported class file major version 61错误的方案 核心原因
版本61对应Java 17,这个错误说明maven-jlink-plugin执行时依赖的JDK版本低于17——哪怕项目JDK和compiler插件配置正确,插件自身的运行环境可能没跟上。
具体排查&修复步骤
确认Maven运行时的JDK版本
执行mvn --version,重点看Java version和Java home字段,必须指向BellSoft Liberica 17。如果显示低版本:- 检查系统
JAVA_HOME环境变量,确保指向Liberica 17路径 - 确认IDE中Maven运行配置的JRE是「使用项目JDK」,且项目JDK确实是17
- 终端执行
java -version验证当前生效的JDK版本
- 检查系统
升级maven-jlink-plugin版本
3.1.0版本对Java 17的兼容存在问题,建议升级到3.2.0及以上,pom.xml修改如下:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jlink-plugin</artifactId> <version>3.2.0</version> <!-- 保留原有其他配置 --> </plugin>补全compiler插件配置
除了<release>17</release>,明确指定source和target,避免编译输出的class文件版本异常:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>17</source> <target>17</target> <release>17</release> <encoding>UTF-8</encoding> </configuration> </plugin>清理后重新构建
执行命令彻底清理缓存,避免旧编译文件干扰:mvn clean install如果在IDE中运行,先执行
mvn clean,再重启IDE刷新配置。排查依赖的class文件版本
确保第三方依赖没有用高于Java 17的版本编译(比如Java 18对应版本62),可以用javap -v <类文件路径> | grep major查看依赖jar中类的版本。
补充
如果以上步骤无效,提供完整的mvn --version输出和堆栈跟踪日志,能更精准定位问题(比如插件依赖的JDK版本冲突)。
内容的提问来源于stack exchange,提问作者wouterio
相关产品推荐
相关产品推荐

