【问题标题】:cannot run osgi bundles outside eclipse无法在 Eclipse 之外运行 osgi 包
【发布时间】:2012-02-11 14:34:35
【问题描述】:

我正在使用 osgi 迈出第一步,但我创建的包有问题。

我在 Eclipse 中开发了 3 个捆绑包(它们是插件项目)。当我使用新的空目标在 eclipse 中运行我的包时,它们工作得非常好。

然后我尝试导出它们并在没有 Eclipse 的情况下运行它们我遇到了问题。我为它们中的每一个创建了一个 jar 文件(使用 export ->deployable 插件),然后我将它们安装在一个正在运行的 equinox 容器中(v3.7.1,来自 eclipse 的插件目录),我得到了很多 RuntimeErrorException 的 ClassNotFoundExceptions

这看起来像是一个类路径问题。我认为我没有正确导出捆绑包,但我不确定。

问题只发生在 2 个捆绑包中,它们使用了额外的库

我怎样才能正确地做到这一点?

如果您需要,这里是full stack

【问题讨论】:

  • 您能否为每个罐子粘贴 META-INF/MANIFEST.MF?我对 Import-Package 部分特别感兴趣。在我看来,要么没有包在你的 OSGi 容器中导出这个包,要么它不存在于 Import-Package 中。如果您在容器中粘贴所有捆绑包的导出包列表,这也将非常有用(我从未使用过 Equinox,但我想这应该可以解决问题:“vsh 包列表”)。

标签: java osgi equinox


【解决方案1】:

以其中一种异常为例:javax.management.RuntimeErrorException 上的 NoClassDefFoundError。

您是否在捆绑包中导入了包 javax.management

请参阅 OSGi 社区 Wiki 中的以下页面,它似乎与您的问题直接相关:http://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F

【讨论】:

  • 非常感谢。我完全忘记了那个 javax。类的处理方式与 java 不同。类。
  • 没有类被视为与java.* 相同,因为java. 是特殊的。 所有其他包必须显式导入。
猜你喜欢
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2014-11-01
  • 2020-02-03
相关资源
最近更新 更多