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

x8diyxa7  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(517)

我正在将公司的项目从Java1.8迁移到OpenJDK14。像其他人一样(fe。在本文中,this或this thread)我在java9模块化方面遇到了一些问题,特别是在包方面 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.all 以及 xml.apis.ext ,因为项目中使用的其他包不在javase中。
我的主管还告诉我不要将任何非maven项目转换为maven项目,我提到了这一点,因为我发现的所有其他关于这个问题的参考文献似乎都讨论了利用maven依赖和排除的解决方案。
现在经过一些分析,我得出结论,对我来说,消除这些错误最有效的方法是解压两个jar文件,反编译包,删除重复的 org.w3c.dom 从这些外部jar,最后重新编译整个过程,并将自定义jar传递到构建路径。
这个想法有道理吗?如果不能使用maven依赖项,您会这样做吗?
因为我们是从1.8迁移过来的,所以我从来没有真正使用过 module-info.java ,那么也许有一种更简单的方法来排除该文件中的那些包?我对其他解决方案持开放态度!
最后但并非最不重要的一点是,如果我描述的解决方案是可行的,那么解包和重新打包这些jar文件的最佳方法是什么?

ajsxfq5m

ajsxfq5m1#

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

相关问题