JDK8迁移至JDK17时Maven子模块构建错误求解决方案
JDK8迁移至JDK17后Maven构建问题解决方案
问题1:test1项目maven-compiler-plugin:3.8.0:compile编译失败
解决方案
- 升级
maven-compiler-plugin版本至3.10.1及以上:父pom的pluginManagement已配置3.10.1版本,需确保test1项目未在自身pom中强制指定旧版本3.8.0。旧版本插件对JDK17的编译规则、语法特性支持不完善,无法正确处理<release>17</release>参数。 - 保持编译配置一致性:沿用父pom中
<release>17</release>的配置,替代单独的source和target参数,确保编译输出完全适配JDK17环境。
问题2:test2项目maven-javadoc-plugin:3.5.0:jar生成Javadoc失败
解决方案
- 升级
maven-javadoc-plugin至3.6.0及以上版本:3.5.0版本不支持JDK17的Javadoc规范(如模块化文档生成、新语法标签解析)。可在父pom的pluginManagement中添加该插件的统一配置:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.7.0</version> <configuration> <!-- 若存在临时Javadoc语法错误,可添加该参数跳过检查,后续需逐步修复错误 --> <additionalJOptions> <additionalJOption>-Xdoclint:none</additionalJOption> </additionalJOptions> </configuration> </plugin> - 若项目启用Java模块化,需在Javadoc配置中补充模块扫描参数,确保插件能识别模块内的类结构。
问题3:esymac项目Javadoc生成时找不到指定类
解决方案
- 校验依赖完整性:确认
com.nokia.j2ssp.comp.esymac.fm.FaultManagerAIFRemote和com.nokia.j2ssp.comp.esymac.util.Configuration所在的依赖jar包已正确引入到esymac项目的<dependencies>中,且依赖版本适配JDK17(部分旧依赖可能未兼容模块化,需升级至支持JDK17的版本)。 - 配置Javadoc依赖扫描:在
maven-javadoc-plugin配置中添加<includeDependencySources>true</includeDependencySources>(若依赖包含源码),确保插件能访问到依赖中的类定义,完成文档生成。 - 模块化适配:若项目使用
module-info.java,需在模块声明中添加对目标类所在模块的引用:requires com.nokia.j2ssp.comp.esymac;
内容的提问来源于stack exchange,提问作者Soumya
相关产品推荐
相关产品推荐

