OSGi上的java.lang.NoClassDefFoundError

时间:2011-03-03 13:18:41

标签: java eclipse osgi apache-felix helios

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

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

但是当然,MainFrame位于激活器所在的捆绑包中,作为公共类。我不明白为什么类加载器没有找到类。

任何人都知道发生了什么事?

4 个答案:

答案 0 :(得分:6)

确保将javax.swing包导入您的包中:

Import-Package: javax.swing

答案 1 :(得分:2)

使用此VM参数:

-Djava.specification.version=1.6

这将强制Felix为Java 6提供一组默认的系统包,其中包括javax.swing及其子包

答案 2 :(得分:1)

现在它有效!我在配置文件中配置了启动委派!

我在config.ini中放了 org.osgi.framework.bootdelegation =

在你们嘿嘿之前,你们两个都应该告诉我这件事。现在我在equinox wiki中读到,按照OSGi规范,我需要定义我需要使用的每个包,我认为是正确的,因为一些自定义的VM可以拥有比其他更多的库。

但Eclipse在导入每个java包(如javax.swing)的概念中不起作用。我会在Eclipse Bugzilla中报告这个。

非常感谢你们!

PS:你的书是什么?@Neil?

答案 3 :(得分:0)

您是否已在捆绑包的MANIFEST.MF中声明了Bundle-ClassPath