1

我使用 Eclipse Indigo 使用 OSGi Java 框架开发了一些包。有一个 Main Bundle,它依赖于其他 bundle 并且具有要运行的主程序。NoClassDefFoundError如果我尝试在 Eclipse 中运行所有包,一切正常,但如果我将每个包保存为 JAR 并在命令行中启动 OSGi 框架,我在尝试启动主包时遇到异常。找不到的类是依赖项。捆绑包的其余部分获得状态 ACTIVE,主捆绑包刚刚解决。

我已经创建了一个包含我正在使用的所有库(mysql 连接器等...)的包,并且我将这个包导入到我需要这些库的每个包中。我不知道这是否是实现它的最佳方法。另外,我在我的应用程序中使用线程,其中一些使用来自不同包的方法,这可能是问题的根源吗?

有谁知道我能做什么?我还必须在 Apache Karaf 中安装捆绑包,我得到了相同的结果。它与每个捆绑包的起始级别有关吗?

4

1 回答 1

1

好的,我发现了问题。Eclipseorg.osgi.framework.bootdelegation默认将参数设置为 *,但所有其他 OSGi 框架都没有。

我现在正在使用 Apache Karaf,我已经将它位于 etc/ 中的 config.properties 从默认值(org.apache.karaf.jaas.boot,sun. ,com.sun. ,javax.transaction,javax.交易。*) 到 *. 这使它工作,但我仍在尝试识别需要加载的确切库,因为不鼓励将此参数设置为 *。

要查找更多信息:http ://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F

谢谢,我希望这对其他人有帮助,

于 2012-10-16T17:43:23.010 回答