8

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

org.osgi.framework.BundleException:捆绑包 org.foo.serviceBundle [253] 中未解决的约束:无法解析 253.0:缺少需求 [253.0] 包;(&(package=org.slf4j)(version>=1.6.0)(!(version>=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 应用服务器上。任何帮助将不胜感激

谢谢

4

4 回答 4

10

这通常意味着您缺少一个导出 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 时就知道这一点!

于 2011-12-02T07:11:24.160 回答
5

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

<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>
于 2012-02-10T20:38:21.640 回答
0

我不确定 Grassfish 应用服务器。在 Fuse ESB 中,通过添加 <Import-Package> org.slf4j.*</Import-Package>,我们解决了同样的问题。

于 2014-04-14T11:41:29.980 回答
-2

将 <scope>provided</scope> 添加到 POM 中的依赖项。阅读http://fusesource.com/docs/ide/7.1/release_notes/release_notes.html

于 2013-03-07T15:05:49.530 回答