OSGi上的java.lang.NoClassDefFoundError

Joh*_*ler 6 java eclipse osgi helios apache-felix

我有一个捆绑,宣布激活器.此激活器创建一个JFrame并显示它.

作为插件项目在Eclipse上运行它工作正常.当我戴上菲利克斯时,它不再起作用了.它显示:java.lang.NoClassDefFoundError:com/griep/ui/MainFrame

但是当然,MainFrame位于激活器的同一束中,作为公共类.我不明白为什么类加载器没有找到类.

谁知道发生了什么?

Nei*_*ett 6

确保将javax.swing包导入捆绑包中:

Import-Package: javax.swing
Run Code Online (Sandbox Code Playgroud)

  • @Suraj很抱歉不得不公开表示不同意,但仅仅因为系统包导出javax.swing包并不意味着它是由其他所有包自动导入的.OSGi中的规则是您必须导入您使用的包,"java.*"除外. (3认同)
  • @Suraj是的我已经尝试过了,是的我知道BREE和个人资料.你读过我的书或关于OSGi的博客文章吗?;-)你可以在*SOME*环境中使用javax.swing而不导入它的原因是因为Eclipse`org.osgi.framework.bootdelegation =*`使用了令人讨厌的hack.永远不应该依赖这种黑客攻击,因为它会导致Ed遇到的错误.在OSGi中使用包的正确方法是导入它. (3认同)