java.lang.LinkageError:加载器约束违规:加载器先前为名称为" javax / xml / namespace / QName"的其他类型启动加载

时间:2015-09-07 07:31:54

标签: java eclipse-plugin linkageerror

我正在开发一个 Eclipse插件,我尝试用等效的 OSGi包替换普通的jar 。我使用 Apache Felix maven-bundle-plugin来构建jar文件并将其转换为OSGi包。在pom.xml中,我为我的插件定义了<Export-Package> uses javax.xml.namespace包,并将<Embed-Dependency>定义为库的所有包(依赖项)包含,包括javax.xml.namespace包。当我在插件的类路径中使用库时,我可以正常运行插件。现在,我从库中创建的OSGi包中导入包,我收到此错误:

java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "javax/xml/namespace/QName"

似乎实例化了QName类的两个不同版本(一个来自插件,另一个来自库?)但我在库和插件中都需要这个类。我尝试将包中的javax.xml.namespace包导入插件,但这没有帮助。此外,我尝试在插件的另一个类中移动与库相关的代码,我不会导入QName类,但这并没有改变。这似乎是一个棘手的问题。我是否需要更改 MANIFEST.MF 或捆绑软件包的嵌入式软件包中的内容?或者我是否需要更改插件导入的软件包中的内容?任何帮助表示赞赏。

0 个答案:

没有答案