OSGI缺少需求错误

时间:2011-12-02 06:48:31

标签: java osgi glassfish-3 apache-felix

我是OSGI的新手,我正在试图弄清楚如何解决下面的错误

org.osgi.framework.BundleException:bundle org.foo.serviceBundle中未解决的约束[253]:无法解析253.0:缺少要求[253.0]包; (及(包= org.slf4j)(版本> = 1.6.0)((版本>!= 2.0.0)))

我使用maven原型生成一个包,并在我的Activator类中添加了一些简单的slf4j日志记录。我也使用maven bundle插件如下:

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.2.0</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-Activator>org.shoppingsite.Activator</Bundle-Activator>
                </instructions>
            </configuration>
        </plugin>

我尝试了其他组合,我得到一个不可解析的包或另一个包。我正在尝试将该软件包部署到GlassFish appserver上。任何帮助将不胜感激

谢谢

4 个答案:

答案 0 :(得分:8)

这通常意味着您缺少导出org.slf4j的捆绑包。这是整个工作流程:

  • maven-bundle-plugin将确保您自己项目的清单导入org.slf4j(因为您需要它)。

  • 项目POM中的maven依赖项将确保下载slf4j工件

然后有两件事可能出错:

  • 您的编辑失败并且找不到slf4j工件(但我想您已经注意到了)

  • 或您下载的slf4工件没有Manifest或者没有导出org.slf4j。要查看它,只需查看org.slf4j包的清单。如果你在像eclipse这样的IDE中直接运行,你可能需要检查$ HOME / .m2 /而不是找到工件。

如果你的工件没有正确的清单,你必须找到一些其他的仓库,你可以从中获得一个合适的捆绑,或修改你正在获得的仓库并将其安装在本地存储库中(并部署)它在你的本地maven包存储库(例如nexus),如果你有一个)

最后一件小事:考虑使用maven-scr插件而不是直接定义激活器和服务发现。我希望当我开始使用OSGi时我已经知道了!

答案 1 :(得分:4)

如果您不想为您使用的每个第三方库创建捆绑包,可以将其编译到捆绑包中。尝试

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.3.6</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Bundle-Activator>org.shoppingsite.Activator</Bundle-Activator>
            <Embed-Dependency>
                slf4j-api;scope=compile,
                log4j;scope=compile
            </Embed-Dependency>
        </instructions>
    </configuration>
</plugin>

答案 2 :(得分:0)

我不确定Grassfish appserver。在Fuse ESB中添加&lt; Import-Package&gt; org.slf4j。*&lt; / Import-Package&gt;,我们解决了同样的问题。

答案 3 :(得分:-2)

添加&lt; scope&gt;提供&lt; / scope&gt;到POM中的依赖关系。 阅读http://fusesource.com/docs/ide/7.1/release_notes/release_notes.html