如何解决 JPMS 和 OSGi Bundle for Eclipse plugin project an Tycho 之间的冲突

How to resolve conflict between JPMS and OSGi Bundle for Eclipse plugin project an Tycho

我正在开发一个基于 Eclipse 的项目,该项目最近从 Java 1.8 切换到 Java 11。因此,我们现在在 JRE 的 类 和 类 从 Eclipse 插件依赖中引入。

The package javax.xml.parsers is accessible from more than one module: <unnamed>, java.xml

所以 java.xml.* 类 现在出现了两次。一次来自模块 java.xml 一次是由于我们的插件对 org.eclipse.wst.xml.core

的依赖
org.eclipse.wst.xml.core -> org.apache.xerces -> javax.xml

我想做的是将模块 java.xml 或包 javax.xml 排除在构建之外。我发现 解释了如何排除模块,但由于多种原因我不能这样做:

在这一点上,我认为最好的解决方案是将 javax.xml 排除在构建之外,但我无法找到如何在 eclipse 和 tycho 构建中执行此操作的方法。

有谁知道如何从 Eclipse build/Tycho 构建中排除对插件的依赖?或者有其他方法可以解决这样的 module/osgi 冲突吗?

看起来 根本原因org.eclipse.wst.xml.core 在尚未为 Java 9 准备好的版本中使用 Xerces或更高 并且 reexports this dependency.

根据 release notes of Xerces Java 9 或更高版本至少需要版本 2.12.1(目前是最新版本):

Xerces-J was previously not building from sources when Java 9+ was used. This release fixes this.

Eclipse Orbit (where you can get third-party plugins that are approved to be used also in commercial products) is the latest version of Xerces 2.9.0. So you have to create a Xerces 2.12.1 plugin yourself. It would be nice if you could contribute this work to Eclipse (to do so, report it to Eclipse WTP Source Editing).