我正在将公司的项目从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文件的最佳方法是什么?
1条答案
按热度按时间ajsxfq5m1#
您不需要反编译/重新编译任何东西,只需删除jar文件中与包对应的目录即可。