OSGi捆绑在Eclipse之外

时间:2012-10-15 21:25:23

标签: java osgi bundle apache-felix apache-karaf

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

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

有谁知道我该怎么办?我还要在Apache Karaf中安装捆绑包,我也得到了相同的结果。是否与每个捆绑包的起始级别有关?

1 个答案:

答案 0 :(得分:1)

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

我现在正在使用Apache Karaf,我已经更改了它位于etc /内的config.properties来自默认值(org.apache.karaf.jaas.boot,sun。,com.sun。< /em>,javax.transaction,javax.transaction.*)到*。这使它工作,但我仍然试图识别需要加载的确切库,因为不建议将此参数设置为*。

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

谢谢,我希望这有助于其他人,