繁体   English   中英

关于“可以从多个模块访问包 org.w3c.dom 的具体问题:<unnamed> ,java.xml&quot;

[英]Specific question concerning "The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml"

我正在将我的公司项目从 Java 1.8 迁移到 OpenJDK 14。像其他多个人一样(在这个这个这个线程中)我遇到了 Java 9 模块化的一些麻烦,特别是包org.w3c.dom

我已经生成了module-info.java ,目前 JRE 系统库 (OpenJDK 14) 和所有外部 JAR 都在 Java 构建路径的 Modulepath 上。 所以我不再有错误module: <unnamed> 我现在得到的实际编译错误是:

The package org.w3c.dom is accessible from more than one module: batik.all, java.xml, xml.apis.ext

顺便说一句,我不能简单地删除 JAR batik.allxml.apis.ext ,因为项目中使用的其他包不在 JavaSE 中。

我的主管还告诉我不要将任何非 maven 项目转换为 maven 项目,我提到了这一点,因为我发现的所有其他参考资料似乎都在讨论利用 Maven 依赖项和排除项的解决方案。

现在经过一些分析,我得出的结论是,我摆脱这些错误的最有效方法是解压两个 JAR 文件,反编译这些包,从这些外部 JAR 中删除重复的org.w3c.dom并最后重新编译整个内容并将该自定义 JAR 传递到构建路径。

  1. 这个想法有意义吗? 如果您不能使用 Maven 依赖项,您会这样做吗?
  2. 由于我们从 1.8 迁移,我从未真正使用过module-info.java ,所以也许有一种更简单的方法来排除该文件中的那些包? 我对替代解决方案持开放态度!
  3. 最后但并非最不重要的一点是,如果我所描述的解决方案是可行的,那么解压和重新打包这些 JAR 文件的最佳方法是什么?

您不需要反编译/重新编译任何东西,您只需删除该包对应的 JAR 文件中的目录即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM