我从Eclipse2019-12到2020-03更新了一个Eclipse项目。更新之后,我在导出上得到了构建错误,如:“可以从多个模块:、java.xml访问包javax.xml.parsers”。
在我的项目中,我使用的是Java 11、无模块info.java文件、Eclipse 3兼容层和eclipse产品导出向导。
错误信息对我来说基本上是清楚的。它在类路径上检测到某些类两次,这是不允许的。一旦这个类由JDK模块提供,"java.xml“。第二个副本来自javax.xml osgi。我的问题是这两个包都不能移除。JDK模块有很多依赖的JDK模块,它们在代码中得到了积极的使用,我不认为它们可以得到一些库的补充。许多非常基本的eclipse捆绑包都使用OSGI包。所以它也不能被移除。
所以我有两个问题:
编辑1:添加可复制示例:https://workupload.com/file/wKUZTXJXsR9
编辑2:另见Eclipse票证:https://bugs.eclipse.org/bugs/show_bug.cgi?id=562761
我创建了一个最小的例子。通过向导导出产品可以看出问题所在。我使用了DocumentBuilderFactory ( javax.xml in Application.java )来触发这个问题。我发现了一些事情:
这提出了一些新的问题:
发布于 2020-06-05 15:46:24
我找到了解决这个问题的方法:当使用目标定义(*.target文件)而不是运行平台( Eclipse的自动目标定义)时,错误根本不会发生!我不知道这两个目标到底有什么区别,因为它们都包含"javax.xml“包。但是,在使用目标文件时,当自动添加依赖项时,"javax.xml“包不会添加到产品文件中,以后也不会抱怨这个包需要"javax.xml”。在使用目标文件时,根本不需要使用"javax.xml“,然后就不会发生错误。
我认为Eclipse中存在一个错误,在使用运行平台时会导致这个问题。但我建议无论如何使用目标定义文件,因为这带来了许多其他优势。
https://stackoverflow.com/questions/60802975
复制相似问题