java - Eclipse 之外的 OSGi bundle

标签 java osgi bundle apache-felix apache-karaf

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

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

有人知道我能做什么吗?我还必须在 Apache Karaf 中安装 bundle ,并且得到了相同的结果。这与每个 bundle 的起始级别有关吗?

最佳答案

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

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

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

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

关于java - Eclipse 之外的 OSGi bundle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12904260/

相关文章:

java - 为什么不显示使用 PDFBox(2.0.11) 设置的表单字段?

java - Vertx 测试部署 Verticle 的上下文问题

java - OSGI 将 bundle 嵌入 Karaf 容器而不是单个模块?

java - 如何将值从 ListView 传递到 detalis Activity

OSX 应用程序包中的 Java swixml

java - Netbeans 8 + maven + OpenJPA 部署到 TomEE - 增强失败

java - 从浏览器访问 Web 服务

java - 为什么父类的字段在其他类中使用时具有空值(Java/apache sling)

symfony - 未加载自定义供应商包命名空间

java - 在读取文件之前检查文件是否打开?