有关 "The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml" 的具体问题
Specific question concerning "The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml"
我正在将我公司的项目从 Java 1.8 迁移到 OpenJDK 14。和其他人一样(fe. 在 this, or this 线程中)我已经 运行 Java 9 模块化的一些麻烦,特别是包 org.w3c.dom
.
我已经生成了 module-info.java
,目前 JRE 系统库 (OpenJDK 14) 和所有外部 JAR 都在 Java 构建路径中的模块路径中。所以我不再有错误 module: <unnamed>
。
我现在得到的实际编译错误是:
The package org.w3c.dom is accessible from more than one module: batik.all, java.xml, xml.apis.ext
顺便说一句,我不能简单地删除 JAR batik.all
和 xml.apis.ext
,因为项目中使用的其他包不在 JavaSE 中。
我的主管也告诉我不要将任何非 Maven 项目转换为 Maven 项目,我提到这一点是因为我发现的所有其他参考资料似乎都在讨论利用 Maven Dependencies 和 Excludes 的解决方案。
现在经过一些分析,我得出的结论是,消除这些错误的最有效方法是解压这两个 JAR 文件,反编译包,删除重复项 org.w3c.dom
从这些外部 JAR 文件中提取,最后重新编译整个文件并将该自定义 JAR 文件传递到构建路径。
- 这个想法有意义吗?如果不能使用 Maven 依赖,你会这样做吗?
- 自从我们从 1.8 迁移以来,我从未真正使用过
module-info.java
,所以也许有一种更简单的方法可以排除该文件中的那些包?我愿意接受替代解决方案!
- 最后但同样重要的是,如果我描述的解决方案是可行的方法,那么解压缩和重新打包这些 JAR 文件的最佳方法是什么?
不需要decompile/recompile任何东西,直接删除包对应的JAR文件中的目录即可。
我正在将我公司的项目从 Java 1.8 迁移到 OpenJDK 14。和其他人一样(fe. 在 this, org.w3c.dom
.
我已经生成了 module-info.java
,目前 JRE 系统库 (OpenJDK 14) 和所有外部 JAR 都在 Java 构建路径中的模块路径中。所以我不再有错误 module: <unnamed>
。
我现在得到的实际编译错误是:
The package org.w3c.dom is accessible from more than one module: batik.all, java.xml, xml.apis.ext
顺便说一句,我不能简单地删除 JAR batik.all
和 xml.apis.ext
,因为项目中使用的其他包不在 JavaSE 中。
我的主管也告诉我不要将任何非 Maven 项目转换为 Maven 项目,我提到这一点是因为我发现的所有其他参考资料似乎都在讨论利用 Maven Dependencies 和 Excludes 的解决方案。
现在经过一些分析,我得出的结论是,消除这些错误的最有效方法是解压这两个 JAR 文件,反编译包,删除重复项 org.w3c.dom
从这些外部 JAR 文件中提取,最后重新编译整个文件并将该自定义 JAR 文件传递到构建路径。
- 这个想法有意义吗?如果不能使用 Maven 依赖,你会这样做吗?
- 自从我们从 1.8 迁移以来,我从未真正使用过
module-info.java
,所以也许有一种更简单的方法可以排除该文件中的那些包?我愿意接受替代解决方案! - 最后但同样重要的是,如果我描述的解决方案是可行的方法,那么解压缩和重新打包这些 JAR 文件的最佳方法是什么?
不需要decompile/recompile任何东西,直接删除包对应的JAR文件中的目录即可。