如何解决rewrite-maven-plugin 5.2.1执行时的Java版本兼容错误?
解决rewrite-maven-plugin 5.2.1的UnsupportedClassVersionError错误
错误原因
报错核心信息:
java.lang.UnsupportedClassVersionError: com/github/benmanes/caffeine/cache/Caffeine has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
- Class文件版本55.0对应Java 11,52.0对应Java 8
- 插件依赖的Caffeine缓存库是用Java 11编译的,但当前运行Maven的JRE是Java 8,版本不兼容导致报错
解决方案
1. 升级JRE到Java 11或更高版本
这是最彻底的解决方式:
- 检查当前JDK版本:执行
java -version确认当前运行环境是Java 8 - 安装Java 11或更高版本(如Java 17 LTS)
- 配置环境变量:将
JAVA_HOME指向新安装的JDK,确保PATH优先级中包含新JDK的bin目录 - 验证版本:重新执行
java -version确认版本为11+后,再运行Maven命令
2. 降级插件到兼容Java 8的版本
如果无法升级JDK,可以选择插件的旧版本:
- rewrite-maven-plugin 5.x系列开始要求Java 11,因此需要降级到4.x版本(比如4.45.0,是支持Java 8的最新稳定版之一)
- 修改项目pom.xml中的插件配置:
<plugin> <groupId>org.openrewrite.maven</groupId> <artifactId>rewrite-maven-plugin</artifactId> <version>4.45.0</version> <!-- 保留原有的configuration配置 --> </plugin> - 清理并重新构建:执行
mvn clean install -U刷新依赖
3. 强制插件使用Java 11运行(项目主体仍用Java 8)
如果项目主体必须基于Java 8,但要使用新版插件,可以让插件单独用Java 11执行:
- 在pom.xml的插件配置中开启fork模式,并指定Java 11的执行路径:
<plugin> <groupId>org.openrewrite.maven</groupId> <artifactId>rewrite-maven-plugin</artifactId> <version>5.2.1</version> <configuration> <fork>true</fork> <executable>/usr/lib/jvm/java-11-openjdk/bin/java</executable> <!-- 替换为你的Java11路径 --> <!-- 原有的其他配置 --> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者Daniel Tamang
相关产品推荐
相关产品推荐

