错误:加载器org.eclipse.osgi.internal.loader.EquinoxClassLoader的未命名模块

问题描述 投票:0回答:1

我是 OSGi 概念的新手,对于以下错误,我们将不胜感激。

运行独立应用程序时没有问题,但当将相同的应用程序放入 OSGI 捆绑包中时,我们会收到以下错误。

导致异常 java.lang.RuntimeException: 无法实例化 解析器org.apache.xerces.parsers.SAXParser: java.lang.ClassCastException:类 org.apache.xerces.parsers.SAXParser 无法转换为类 org.xml.sax.Parser(org.apache.xerces.parsers.SAXParser 处于未命名状态 加载器模块 org.eclipse.osgi.internal.loader.EquinoxClassLoader @14b4fcf0; org.xml.sax.Parser 位于加载程序的未命名模块中 org.eclipse.osgi.internal.loader.EquinoxClassLoader @555c2470)

请注意,该代码片段适用于 JRE8 + Eclipse 4.4,但使用 JRE 11 + Eclipse 4.19 时会失败,并出现上述错误。 在我的应用程序中,我调用第三方 API,该 API 在内部尝试执行上述转换,并抛出错误。

我知道这与 OSGi 类加载器有关,但需要采取步骤来查找此问题的原因。我们尝试通过 OSGi 控制台获取更多信息,因为它是一个巨大的应用程序,如果我们在控制台上执行 SS 命令,我可以看到列出的超过 1000 个捆绑包。

提前致谢。

问候, 赫鲁什

java eclipse osgi osgi-bundle
1个回答
0
投票

这是由于 Java 9 (Jigsaw) 中的更改所致。请参阅https://www.logicbig.com/tutorials/core-java-tutorial/modules/unnamed-modules.html

在升级到 java 11 时,我们的产品也遇到了类似的问题。这可能与以某种方式导出 org.xml.sax 的旧库有关。我们已经升级或替换了这些库以修复它

© www.soinside.com 2019 - 2024. All rights reserved.