OpenPDF执行Maven install报错,编译成功后遇Java9模块编译问题
问题排查与解决思路
你遇到的问题核心是:执行install阶段时触发了Java 9模块信息的编译,而该编译过程无法找到项目自身的com.lowagie.*包,同时gpg.skip参数可能间接激活了相关编译逻辑。
具体原因分析
- OpenPDF项目在
src/main/java9目录下存放了Java 9+模块系统所需的module-info.java,其中引用的com.lowagie.*包是项目自身重构后的代码(原iText的包名)。 - 之前执行
clean compile package时,Maven并没有触发Java 9模块的编译流程(可能是默认Profile未激活或编译条件未满足),所以没有报错。 - 当添加
gpg.skip=true并执行install时,可能激活了项目中与发布、多版本编译相关的Profile,触发了Java 9模块信息的编译;此时由于编译顺序或Classpath配置问题,编译器无法找到已经编译好的com.lowagie.*类文件,导致报错。
可行的解决方法
跳过重复编译直接安装:既然已经完成了
compile package,可以跳过编译阶段直接执行install:mvn install -Dgpg.skip=true -DskipCompile -DskipTests这样Maven会直接使用已打包好的jar文件完成本地仓库安装,不会触发新的编译流程。
强制指定Java 8编译:如果不需要Java 9模块支持,可强制让Maven用Java 8编译,跳过Java 9模块信息的处理:
mvn clean compile package install -Dgpg.skip=true -Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8检查并调整Maven Profile配置:打开项目的
pom.xml,查找与Java 9编译相关的Profile配置(通常会有activation节点控制激活条件),修改或禁用该Profile,避免在install阶段触发不必要的模块编译。
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

