克隆Guava项目用JDK11运行单元测试遇UnsupportedClassVersionError
问题解决:Guava单元测试在JDK11下报UnsupportedClassVersionError
错误原因
报错核心是com/google/errorprone/ErrorProneJavacPlugin类由JDK17编译(对应类文件版本61.0),而你的本地环境是JDK11(仅支持最高类文件版本55.0),导致JVM无法加载该类。同时项目指定的-sourcepath参数与自动计算路径冲突,触发了编译器异常。
解决步骤
方法1:降级ErrorProne版本
在Guava项目的构建文件中,找到ErrorProne依赖配置,将版本降级至兼容JDK11的版本(如2.18.0):- Maven示例修改:
<dependency> <groupId>com.google.errorprone</groupId> <artifactId>error_prone_core</artifactId> <version>2.18.0</version> <scope>provided</scope> </dependency> - Gradle示例修改:
dependencies { errorprone 'com.google.errorprone:error_prone_core:2.18.0' }
- Maven示例修改:
方法2:构建时禁用ErrorProne
若无需ErrorProne代码检查,可跳过该插件:- Maven执行测试时添加参数:
mvn test -Dmaven.compiler.fork=true -Dmaven.compiler.executable=$JAVA_HOME/bin/javac -Xlint:-options - Gradle修改
build.gradle移除插件:plugins { // 注释或移除ErrorProne插件配置 // id "net.ltgt.errorprone" version "3.1.0" }
- Maven执行测试时添加参数:
方法3:升级本地JDK版本
将本地JDK升级至17或更高版本,直接兼容类文件版本61.0,彻底解决版本不匹配问题。
额外提示
修改配置后,先执行清理命令(Maven:mvn clean;Gradle:./gradlew clean)清除旧构建缓存,再重新运行单元测试确保配置生效。
内容的提问来源于stack exchange,提问作者Poo Yoo
相关产品推荐
相关产品推荐

