如何在Equinox中调试OSGI类加载器问题?

3
我正在尝试创建RestEasy 2.2.1.GA的OSGI捆绑包。 然而,当我的测试客户端捆绑包尝试实例化特定类型时,它会失败。
这个问题是特定于Equinox容器的,但我卡在了试图找出问题所在的地方。我无法将问题缩小到导致问题的实际类型。可能是有另一种类型的有问题类中的字段,或者在继承链中的某个其他类型是不可访问的,但是哪一个呢?
有没有办法获取有关问题的更多信息?这时找不到类的异常对我没有帮助。我该如何发现问题的根源?在编译时,Eclipse并没有对找到有问题的类型表示不满,并且在equinox控制台下,所有已部署的插件都被报告为“已解决”。
1个回答

3

您需要了解发生了什么:

  1. 检查 ClassNotFoundException 发生的位置。大多数情况下,这指明哪个 bundle 无法加载该类。请注意一些扩展程序试图代表其他 bundle 加载类。

  2. 使用 Equinox 控制台 查找该类位于何处。

  3. 现在,您应该对事物的运作有相当好的理解。现在,需要找出为什么它们不起作用。不幸的是,我找不到好的调试工具来检查解析器的工作。启用时,您可以尝试通过 org.eclipse.osgi 记录的详细调试信息来推断问题(如果问题在解析器中)。

    有哪些可用的 org.eclipse.osgi 调试选项? (可能并不最新)

    如何启用它们


Danail,你提出的方案似乎是唯一剩下的选择。虽然我必须承认,我的最初尝试似乎没有起作用。无论如何,还是谢谢你。 - mahonya
1
在OSGi中调试类加载问题需要您对应用程序模块有很好的理解,以及对使用的框架有基本的了解。这并不容易,但是可以做到 :) - Danail Nachev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接