Java Maven项目本地构建失败:com.sun.tools.javac.code.TypeTags缺失
排查步骤
核对JDK版本一致性
生产Tekton环境与本地Ubuntu的JDK版本必须匹配:com.sun.tools.javac.code.TypeTags是JDK 8及以下的内部类,JDK 9+已被移除并替换为TypeKind。- 执行
java -version和javac -version确认本地JDK版本,同时查询生产环境Tekton构建镜像的JDK版本。 - 若本地JDK版本高于生产环境,在Ubuntu上通过
update-alternatives切换至与生产一致的JDK版本(如JDK 8)。
- 执行
检查maven-compiler-plugin配置
当前使用的maven-compiler-plugin:3.7.0对JDK 9+兼容性有限,且需确保编译参数与JDK版本匹配:- 打开项目根pom.xml,确认
source和target参数与目标JDK版本一致(如JDK 8对应1.8)。 - 建议升级插件至3.8.1及以上版本,示例配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
- 打开项目根pom.xml,确认
排查依赖库兼容性
旧版本依赖库(如Lombok 1.16.x及更早版本)会依赖TypeTags类,导致JDK 9+编译失败:- 执行
mvn dependency:tree生成依赖树,查找可能使用该内部类的库。 - 若项目使用Lombok,升级至1.18.0及以上版本,该版本已适配JDK 9+的API变更。
- 执行
确认IntelliJ IDE的JDK配置
避免IDE与终端使用的JDK版本不一致:- 打开
File → Project Structure → Project,确认Project SDK和Language Level与系统JDK匹配。 - 检查
Modules下每个模块的SDK配置,确保统一使用目标JDK版本。
- 打开
定位多模块构建的具体问题
单个模块可构建但多模块失败,需缩小问题范围:- 执行
mvn -pl selenium clean install单独构建失败的模块,确认是否为模块自身问题。 - 执行
mvn clean彻底清理所有构建产物后,重新尝试多模块构建。
- 执行
检查Ubuntu环境的JAVA_HOME配置
确保终端环境变量正确指向目标JDK:- 执行
echo $JAVA_HOME验证路径是否正确,需与java -version输出的版本对应。 - 检查
MAVEN_OPTS环境变量是否存在冲突的JDK参数,必要时清空后重试构建。
- 执行
内容的提问来源于stack exchange,提问作者user9347168
相关产品推荐
相关产品推荐

