maven - 尝试了解 OSGi 解析错误

标签 maven osgi

我是 OSGi 的新手,我遇到了一个非常简单的初学者错误。

当我将 BundleActivator 添加到我的 Bundle 时,出现以下解析错误:

[INFO] Building jar: C:\projects\osgi.enroute-master\projects\testproject\app\target\app-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- bnd-indexer-maven-plugin:4.0.0:index (index) @ app ---
[INFO]
[INFO] --- bnd-indexer-maven-plugin:4.0.0:index (test-index) @ app ---
[INFO]
[INFO] --- bnd-export-maven-plugin:4.0.0:export (default) @ app ---
[ERROR] Resolution failed. Capabilities satisfying the following requirements could not be found:
    [<<INITIAL>>]
      ? osgi.identity: (osgi.identity=org.foo.examples.service.impl)
          ? [org.foo.examples.service.impl version=0.0.1.201806070724]
              ? osgi.wiring.package: (&(osgi.wiring.package=org.osgi.framework)(&(version>=1.9.0)(!(version>=2.0.0))))
                  ? [org.osgi.framework version=1.9.0.201802012106]
                      ? osgi.wiring.package: (&(osgi.wiring.package=org.osgi.dto)(&(version>=1.1.0)(!(version>=2.0.0))))
The following requirements are optional:
    [org.apache.felix.scr version=2.1.0]
      ? osgi.wiring.package: (&(osgi.wiring.package=org.osgi.service.cm)(&(version>=1.6.0)(!(version>=2.0.0))))
      ? osgi.wiring.package: (&(osgi.wiring.package=org.apache.felix.service.command)(&(version>=1.0.0)(!(version>=2.0.0))))
      ? osgi.wiring.package: (&(osgi.wiring.package=org.apache.felix.shell)(&(version>=1.0.0)(!(version>=1.1.0))))
      ? osgi.wiring.package: (&(osgi.wiring.package=org.osgi.service.log)(&(version>=1.3.0)(!(version>=2.0.0))))
      ? osgi.wiring.package: (&(osgi.wiring.package=org.osgi.service.metatype)(&(version>=1.2.0)(!(version>=2.0.0))))

我正在使用 OSGi enRoute example on GitHub ,它使用 Maven 插件和自定义原型(prototype)来设置项目和不同类型的包。它还使用 Bndtools,据我所知,它应该可以自动准确地解决这些类型的包依赖关系。我不能排除在 OSGi 依赖性问题之下也存在 Maven 依赖性。

是否有关于如何解析和理解此类错误的文档?

我知道这个问题很模糊,我目前缺乏理解,甚至无法精确地提出问题:)

最佳答案

对于解析错误,您首先要查看失败的最内层解析。在您的情况下是:

osgi.wiring.package: (&(osgi.wiring.package=org.osgi.dto)(&(version>=1.1.0)(!(version>=2.0.0))))

这可以翻译为您缺少一个包,该包提供了版本为 [1.1.0,2.0.0) 的包“org.osgi.dto”的导出。此包由

提供
https://mvnrepository.com/artifact/org.osgi/org.osgi.dto

所以你可以尝试安装这个包。

关于maven - 尝试了解 OSGi 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50735568/

相关文章:

java - Wildfly Swarm + Maven 填充临时目录

java - Maven generatePackage 用于从模式定义生成类的 wsdl

java - Intellij 断点不起作用。

javascript - &lt;script&gt; in sightly 下的list元素如何循环?

java - 如何检测是否在osgi容器中运行

java - 在 OSGI 中使 bundle 并行、线程化运行的最佳方法是什么

java - 如何使用 Maven 构建 WSDL

java - 清理jar冲突

java - 以 0..n 基数绑定(bind) OSGi 服务的良好实践?

maven - 使用 <Embed-Dependency> 在 OSGI 包中添加 jar 的问题