当前位置: 首页 > 面试题库 >

OSGI缺少需求错误

甘学潞
2023-03-14
问题内容

我是OSGI的新手,我试图找出解决以下错误的方法

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

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

        <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应用服务器上。任何帮助将不胜感激

谢谢


问题答案:

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



 类似资料:
  • 我写了一个包含5个模块的项目。我用maven在intellij IDEA中创建它们,然后为所有模块添加“OSGi”框架支持。我使用maven-bundle-plugin来配置导出包和导入包。但是当我运行它的时候,总是有一个错误: 启动器模块包含Bundle-Activator,org.gxkl.server包在服务模块中。我使用类似的pom来配置模块,但是只有服务模块出错。启动器中的pom文件如下

  • 我试图用bndool编写一个OSGI REST包。 我在cnf项目中添加了我需要的所有罐。然后我把它们添加到捆绑包构建路径中。 我得到以下运行时异常 OSGi捆绑包未启动:缺少需求osgi.wiring.package( 我不明白这个错误,因为我使用了javax.ws.rs-api 2.0.1。 我试图在构建路径中明确指定版本,如下所示 没有任何运气。 我用错罐子了吗? 非常感谢。 这是我的bnd

  • 我得到了<code>缺少的要求osgi.wiring。包…部署包时出错,缺少的包来自库(maven依赖项),因此包在其<code>类路径中 我的理解是:当使用来自另一个<code>OSGI捆绑包,但事实并非如此,这只是一个自制的库(没有部署到OSGI容器,甚至没有捆绑包),所以我一定不太明白

  • 我从卡拉夫那里得到以下消息: 我不明白这个错误意味着什么问题在哪里 我使用的是karaf 4.0.10版,运行的是,我想安装自定义business defa数据库。我希望有人能解释一下这个错误是什么意思。我仔细检查了maven存储库中提到的ojdbc8_12.2.0.1.0_ojdbc8-12.2.0.1.0。走对了路。

  • 我正在apache Karaf 3.0.3中创建一个简单的Echo服务包,我有我的Activator类, 我可以通过Eclipse创建捆绑包,使用以下Manniest文件 我还有下面的POM文件 也是我的回声课 当我在karaf 3.0.3上部署此应用程序时,我面临以下问题 > 在尝试启动包时获取以下堆栈跟踪 错误:Bundle com。公司osgi[112]启动/停止捆绑包时出错。(org.os

  • 我试图在EclipseIDE中运行Equinox的区域有向图束。当我在OSGi命令提示符下使用start命令运行相关的bundle时,我收到一个错误,表示无法解析该bundle。原因:缺少约束:导入包:org.osgi.framework.hooks。捆version=“1.0.0”。为了找出框架中的现有版本,我尝试了命令p org.osgi.framework.hooks.bundle。结果显示