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

标签 java eclipse-plugin osgi tycho java-platform-module-system

我正在开发一个基于 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 排除在构建之外。我找到了 this post关于如何排除模块的解释,但由于多种原因我不能这样做:

  • 许多其他模块依赖于 java.xml。删除它会产生更多问题
  • mavan tycho build 并不关心我对 eclipse 项目模块设置的处理。

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

有谁知道如何从 Eclipse 构建/Tycho 构建中排除对插件的依赖?还是有另一种方法来解决像这样的模块/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 (您可以获得经批准也可用于商业产品的第三方插件)是 Xerces 2.9.0 的最新版本。因此,您必须自己创建一个 Xerces 2.12.1 插件。如果您能将这项工作贡献给 Eclipse(为此,report it to Eclipse WTP Source Editing),那就太好了。

关于java - 如何解决 JPMS 和 OSGi Bundle for Eclipse plugin project an Tycho 之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63128271/

相关文章:

java - 将标签放在顶部 SWT 中

eclipse - 由 : java. lang.NoClassDefFoundError: org/eclipse/core/runtime/IPluginDescriptor 引起

java - 方法 split(String) 未为类型 String 定义

java - 不根据 java 系统属性激活 OSGI 声明性服务

java - 好的 OSGi 教程

java - 将.java 文件添加到eclipse 中?

java - 我在 Scala 中可以做什么在 Java 中不能做的事情?

java - osgi:片段在 eclipse pde 之外无法工作(并且没有出现错误)

java - Eclipse:在Linux下启动自定义eclipse应用程序会立即返回命令行提示符

java - BigInteger 大小的最小值