【问题标题】:On Apache Felix (v 4.2.1) Gogo shell, System.out.println from the bundles is not printed在 Apache Felix (v 4.2.1) Gogo shell 上,未打印捆绑包中的 System.out.println
【发布时间】:2014-03-15 04:45:39
【问题描述】:

免责声明:我是 OSGi 的新手,特别是 Felix。因此,对于我这次犯的任何愚蠢错误,我们深表歉意,但如果您能指出一个错误,我们将不胜感激。

我已经下载了 Apache Felix v4.2.1 并按照http://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-usage-documentation.html 指南中的说明开始运行它

还按照给定的教程开发示例服务侦听器包、字典包和字典客户端(参考:http://felix.apache.org/documentation/tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-1.html

我能够使用 felix:start 命令在 Felix 中成功安装和启动它们。以下是 felix:lb 命令的输出,

START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (4.2.1)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
    2|Active     |    1|Apache Felix Gogo Command (0.12.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
    4|Active     |    1|Apache Felix Gogo Shell (0.10.0)
    5|Active     |    1|file:/home/dev/experiments/osgi/workspace/FirstProj/dist/firstproj.jar (0.0.0)
    6|Active     |    1|file:/home/dev/experiments/osgi/workspace/SecondProj/dist/dictionary.jar (0.0.0)
    7|Active     |    1|file:/home/dev/experiments/osgi/workspace/ThirdProj/dist/dictionary_client.jar (0.0.0)

但是,我的两个包都没有在控制台上输出任何内容,并且第 7 个包 (dicionary_client) 也应该要求输入(使用 System.in),这也不起作用。

这一定是一些小的配置/执行错误,但如果你们能指出我正确的方向,真的很感激。

谢谢。

【问题讨论】:

    标签: osgi apache-felix osgi-bundle


    【解决方案1】:

    我发现了问题所在。捆绑包没有正确安装,因为它们对应的 jar 文件没有 META-INF 目录条目。

    他们有 META-INF/MANIFEST.MF 但看起来 Felix 在 jar 的目录结构中需要 META-INF 目录(它可能使用 getResource 方法来保持 META-INF 目录的句柄)。

    Eclipse 的导出 jar 不会创建这样的条目(即使选择了添加目录选项)。所以我手动构建了罐子,它们正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-29
      • 2020-07-29
      • 2014-01-08
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多