当前位置: 首页 > 知识库问答 >
问题:

如何解决Eclipse插件项目Tycho的JPMS和OSGi包之间的冲突

薄瑞
2023-03-14

我正在从事一个基于Eclipse的项目,该项目最近从Java1.8切换到Java11。因此,我们现在在来自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或bundle javax。xml不会包含在生成中。我发现这篇文章解释了如何排除模块,但出于多种原因,我不能这样做:

  • 许多其他模块依赖于java.xml.删除这会产生更多的问题
  • mavan tycho构建不关心我对eclipse项目模块设置做了什么。

在这一点上,我认为最好的解决方案是排除javax。xml没有包含在构建中,但我无法找到一种在eclipse和tycho构建中实现这一点的方法

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

共有1个答案

袁何平
2023-03-14

看起来根本原因是org.eclipse.wst.xml.core使用Xerces的版本还没有准备好Java9或更高版本,并且它重新导出了这个依赖项。

根据Xerces的发行说明,Java 9或更高版本至少需要2.12.1版(目前是最新版本):

Xerces-J以前在使用Java9时不是从源代码构建的。此版本修复了此问题。

在Eclipse Orbit中(您可以获得第三方插件,这些插件也被批准用于商业产品)是Xerces 2.9.0的最新版本。所以你必须自己创建一个Xerces 2.12.1插件。如果您能将这项工作贡献给Eclipse(要这样做,请将其报告给Eclipse WTP源编辑),那就太好了。

 类似资料:
  • 在团队协作过程中难免会发生文件冲突,下面介绍在使用ecplise开发过程中遇到代码冲突如何解决? 一、右键项目 -> Team -> 与资源库同步 二、在同步视图中选择Conflicts Mode,以便首先查看解决冲突 三、双击需要解决的冲突文件,这里为Student.java,右侧主显示区会出现比较视图。左侧为本地程序,右侧为svn上的最新代码。 原来字段名为email,本地将其改为emailA

  • 我有一个Grails 3.3.6应用程序。我想在这个应用程序中合并来自不同Spring启动应用程序的一些neo4j功能。所以我从Spring启动应用程序中添加了以下deps- 并将源文件放在我的Grails应用程序的src文件夹中。spring boot应用程序正在使用一个配置类来创建bean,如下所示- 当我运行grails应用程序时,我得到了Spring bean冲突异常。看起来Grails和

  • 本文向大家介绍完美解决android 项目jar包冲突的问题,包括了完美解决android 项目jar包冲突的问题的使用技巧和注意事项,需要的朋友参考一下 大家在做开发中竟然需要用到一些三方库 或者 需要集成三方的SDK开发包,尤其是项目特别庞大的时候,引用的三方的东西特别多,那么肯定会碰到一些jar包冲突的情况。 常见的情况有以下几种 1.项目自己引用jar包重复 2.项目中jar包和三方SDK

  • 我正在尝试构建OSGi捆绑包,用于Equinox和Felix。我的一些捆绑包使用javax。*包,例如javax。网 JRE提供了这个包,没有问题,它可以在两个框架中工作。 Felix要求我在清单中导入该包。MF: 这是有道理的,因为只有java。*包应该隐式包含。出于某种原因,无论哪种方式,春分都很好,它似乎神奇地找到了它们。 当我和第谷一起建造时,我的问题就来了。当我添加导入包时,第谷构建失败

  • 我在让我的Camel路线在OSGI(Equinox)-捆绑包和插件项目中工作时遇到了问题。 路线如下所示: 我的测试类应该启动Camel上下文: 这个包在Eclipse中使用OSGI框架运行配置启动。 安慰: 但是现在如何“启动”CamelContext呢?没有osgi,作为一个标准的java应用程序,这个例子是有效的;但在那里,我有一个主要的方法,其中有骆驼的背景。 我尝试用一个激活器来启动ca

  • 如果我评论其中一个,我会在游戏开始时收到运行时错误。我真的能做什么? 谢谢