我有一个捆绑,宣布激活器。此激活器创建一个JFrame并显示它。
在Eclipse上作为Plugin项目运行它运行正常。当我戴上菲利克斯时,它不再起作用了。 表明: java.lang.NoClassDefFoundError:com / griep / ui / MainFrame
但是当然,MainFrame位于激活器所在的捆绑包中,作为公共类。我不明白为什么类加载器没有找到类。
任何人都知道发生了什么事?
答案 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