6

我有一个捆绑包,声明了一个激活器。这个激活器创建一个 JFrame 并显示它。

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

但是 MainFrame 与激活器位于同一个包中,当然,作为一个公共类。我不明白为什么类加载器找不到类。

有谁知道发生了什么?

4

4 回答 4

6

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

Import-Package: javax.swing
于 2011-03-03T15:52:25.180 回答
2

使用此 VM 参数:

-Djava.specification.version=1.6

这将迫使 Felix 提供 Java 6 的默认系统包集,其中包括javax.swing及其子包

于 2013-02-16T13:53:00.373 回答
1

现在它起作用了!我在配置文件中配置了引导委托!

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

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

但是 Eclipse 不适用于导入每个 java 包(如 javax.swing)的概念。我将在 Eclipse Bugzilla 中报告这一点。

非常感谢你们!

PS:你的书@Neil 是什么?

于 2011-03-04T12:24:53.853 回答
0

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

于 2011-03-03T13:24:04.887 回答