【问题标题】:How can I debug OSGI classloader issues in Equinox?如何在 Equinox 中调试 OSGI 类加载器问题?
【发布时间】:2012-01-10 19:14:43
【问题描述】:

我正在尝试为 RestEasy 2.2.1.GA 创建 OSGI 包。 但是,我的 RestEasy 包的测试客户端包在尝试实例化特定类型时失败。

这个问题是 Equinox 容器特有的,但我在试图找出问题所在时卡住了。我无法将问题缩小到导致问题的实际类型。可能有问题的类的字段具有另一种类型,或者继承链中的某些其他类型是不可访问的,但是哪个?

有没有办法获得有关该问题的更多信息?在这一点上,找不到类的异常对我没有帮助。我怎样才能发现问题的根源?在编译时,Eclipse 不会抱怨找到有问题的类型,并且所有部署的插件在 Equinox 控制台下都报告为“已解决”。

【问题讨论】:

    标签: java osgi equinox


    【解决方案1】:

    你需要知道发生了什么:

    1. 检查ClassNotFoundException 发生在哪里。它指出(在大多数情况下),哪个包无法加载该类。请注意某些作为扩展程序的包,它们会尝试代表其他包加载类。

    2. 使用Equinox console查找班级所在的位置

    3. 到现在为止,您应该已经很好地理解了这些东西应该如何工作。现在,您需要找出它们不起作用的原因。不幸的是,我找不到好的调试工具来检查解析器的工作。启用后,您可以尝试使用由org.eclipse.osgi 记录的大量调试信息来推断您的问题(如果它在解析器中)。

      What org.eclipse.osgi debug options are available?(可能不是最新的)

      How to enable them

    【讨论】:

    • Danail,您所建议的几乎是唯一的选择。虽然我不得不承认我最初的尝试似乎没有奏效。还是谢谢
    • 调试 OSGi 中的类加载问题需要您对应用程序模块有很好的了解,并对所使用的框架有基本的了解。这并不容易,但可以做到:)
    猜你喜欢
    • 2011-08-05
    • 2010-11-30
    • 2011-12-05
    • 1970-01-01
    • 2012-07-27
    • 2014-09-04
    • 2011-11-01
    • 2012-09-10
    • 1970-01-01
    相关资源
    最近更新 更多