编程语言
首页 > 编程语言> > java – OSGI缺少需求错误

java – OSGI缺少需求错误

作者:互联网

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

org.osgi.framework.BundleException:bundle org.foo.serviceBundle中未解决的约束[253]:无法解析253.0:缺少需求[253.0]包; (及(包= org.slf4j)(版本&GT = 1.6.0)((版本&GT!= 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上.任何帮助将不胜感激

谢谢

解决方法:

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

> maven-bundle-plugin将确保您自己的项目清单导入org.slf4j(因为您需要它).
>项目POM中的maven依赖项将确保下载slf4j工件

然后有两件事可能出错:

>您的编译失败并且找不到slf4j工件(但我想您已经注意到了)
>或您下载的slf4工件没有清单或没有导出org.slf4j.要查看它,只需查看org.slf4j包的清单.如果你在像eclipse这样的IDE中直接运行东西,你可能需要检查$HOME / .m2 /而不是找到工件.

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

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

标签:java,osgi,apache-felix,glassfish-3
来源: https://codeday.me/bug/20191005/1856236.html