【问题标题】:Adding an external jar file to an OSGi application causes issues将外部 jar 文件添加到 OSGi 应用程序会导致问题
【发布时间】:2020-03-29 16:28:04
【问题描述】:

我是 Java OSGi 编程的新手。我正在创建一个名为 com.myManager 的新包,并将其添加到具有许多包的现有应用程序中。

我正在创建的这个包依赖于一个名为 jsoup-1.12.1 的外部 jar 文件,该文件用于解析 html 文件。我可以通过 eclipse 添加这个依赖项,并且我的包构建得很好。

但是,当我尝试将我的包添加到主 bndrun 应用程序时,我收到以下粘贴错误。不幸的是,我无法理解这里需要什么。

我想我们不能像我一样简单地添加外部 jar 文件吗?提前致谢。

Resolution failed. Capabilities satisfying the following requirements could not be found:
[<<INITIAL>>]
  ⇒ osgi.identity: (osgi.identity=com.myManager)
      ⇒ [com.myManager version=0.0.0]
          ⇒ osgi.wiring.package: (&(osgi.wiring.package=org.jsoup))

【问题讨论】:

  • OSGi 容器抱怨它无法解析您的新捆绑包所依赖的包org.jsoup。您必须将 jsoup 库部署为一个包(如果它是这样打包的),或者将该库嵌入到您的包中。
  • @gioranv 将库嵌入到我的包中。我该怎么办?我已经将它添加到我的包中的 lib 文件夹中,并通过 Eclipse 将其配置为我的包的依赖项。谢谢
  • 听从 Christian 的回答中的建议。幸运的是,现在大多数库都打包成包。

标签: java eclipse jar osgi osgi-bundle


【解决方案1】:

到目前为止,您只将 jsoup 添加到包的构建时间依赖项中。在你的包中使用 jsoup 然后在你的包清单中创建一个导入包声明。这是意料之中的,不是问题。 您看到的错误是在您的应用程序的组装时(当 bnd 创建 runbundles 列表时)您的存储库中没有可以提供此包的包。

Jsoup 已经是一个 OSGi 包。只需将其添加到应用程序的捆绑包中即可。如何将 jsoup 添加到包中取决于您如何组装应用程序。对于 eclipse pde,您可以将其添加到目标平台。对于 apache karaf,您可以将其添加到您的功能中。

对于使用 maven 构建的新 bndrun,您只需将 jsoup 添加到构建存储库的 pom 中。就像在这个example 中一样。如果需要,将包放在存储库中允许 bndtools 为您的应用程序选择包。

【讨论】:

  • 谢谢。我仍然不完全理解。我只有 jar 文件,我将它添加到依赖项中。我没有看到 jsoup 作为将其作为捆绑包添加到我的应用程序的选项。
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2019-10-04
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多