有关「;可以从多个模块访问包org.w3c.dom:<;未命名>;,“java.xml”;

有关「;可以从多个模块访问包org.w3c.dom:<;未命名>;,“java.xml”;,java,xml,jar,migration,modularity,Java,Xml,Jar,Migration,Modularity,我正在将公司的项目从Java1.8迁移到OpenJDK14。与其他许多人(fe.in或thread)一样,我在Java9模块化方面遇到了一些问题,特别是在包org.w3c.dom方面 我已经生成了module info.java,目前JRE系统库(OpenJDK 14)和所有外部JAR都位于java构建路径的Modulepath上。因此,我不再有错误模块:。 我现在得到的实际编译错误是: The package org.w3c.dom is accessible from more than o

我正在将公司的项目从Java1.8迁移到OpenJDK14。与其他许多人(fe.in或thread)一样,我在Java9模块化方面遇到了一些问题,特别是在包
org.w3c.dom
方面

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

The package org.w3c.dom is accessible from more than one module: batik.all, java.xml, xml.apis.ext
顺便说一句,我不能简单地删除jar
batik.all
xml.api.ext
,因为这些jar的其他包在项目中使用,而JavaSE中没有

我的主管还告诉我不要将任何非maven项目转换为maven项目,我提到了这一点,因为我找到的所有其他关于这个问题的参考文献似乎都在讨论利用maven依赖项和排除项的解决方案

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

  • 这个想法有意义吗?如果不能使用Maven依赖项,您会这样做吗
  • 因为我们是从1.8迁移过来的,所以我从来没有实际使用过
    module info.java
    ,所以也许有一种更简单的方法可以将这些包排除在该文件中?我对其他解决方案持开放态度
  • 最后但并非最不重要的一点是,如果我所描述的解决方案是可行的,那么解包和重新打包这些JAR文件的最佳方法是什么

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