当前位置: 首页 > 知识库问答 >
问题:

Apache servicemix OSGi捆绑包无法导入包

匡旭东
2023-03-14

我还不是一个有经验的OSGi用户,因此我会遇到一些问题。

我正在尝试使用org.apache.servicemix.bundles.hadoop-client作为外部hadoop提供程序,因为我不希望我的包包含所有这些类。

但是,当我运行这组包(my和org.apache.servicemix.bundles.html" target="_blank">hadoop-client)时,我得到以下错误:

错误:Bundle org.apache.serviceMix.bundles.hadoop-client[56]错误启动文件:bundles/org.apache.serviceMix.bundles.hadoop-client2.8.1.1.jar(org.osgi.framework.bundleException:无法解析org.apache.serviceMix.bundles.hadoop-client[56](r56.0):缺少需求[org.apache.serviceMix.bundles.hadoop-client[56](r56.0)]osgi.wiring.package;(&(osgi.wiring.package=corg.osgi.framework.bundleException:无法解析apache.serviceMix.bundles.hadoop-Client[56ent[org.apache.serviceMix.bundles.hadoop-Client[56](R 56.0)]osgi.wiring.package=com.google.inject)(ve](R 56.0)]osgi.wiring.package;(&(osgi.wiring.package=com.google.inject)(&(osgi.wiring.package=com.google.inject))(版本>=3.0.0)(!(版本>=4.0.0))])rsion>=3.0.0)(!(版本>=4.0.0)))未解决的需求:[[org.apache.servicemix.bundles.hadoop-client[56](R 56.0)]oSGI.Wiring.Package;(&(osgi.wiring.package=com.google.inject)(版本>=3.0.0)(!(版本>=4.0.0))]在org.apache.felix.framework.felix.resolveBundlerEvision(版本>=4111)在org.apache.felix.framework.felix.startBundle(版本>2117)在org.apache.felix.framework.felix.startLevel(版本>=1371)在org.apache.felix.framework.felix.setActiveStartLevel(版本>=1371)在read.java:748)

我知道org.apache.servicemix.bundles.hadoop-client导入com.google.inject并期望其他包导出它。

我自己的bundle也导入了com.google.inject,并且工作正常。唯一的区别是我的bundle使用的是3.0版本,而Hadoop想要的是4.0

com.google.inject3.04.0包都在OSGI_CONTAINER/bundles文件夹中。

我甚至尝试强制我的bundle使用 com.google.inject,结果“起作用了”。错误开始要求另一个库。

所以我卡在重点上了。谢谢你的建议。

共有1个答案

文华美
2023-03-14

上述异常的核心是

(&(osgi.wiring.package=com.google.inject)(version>=3.0.0)(!(version>=4.0.0)))

这意味着hadoop-client需要一个将包com.google.inject导出到版本[3.0.0,4.0.0]的捆绑包,这意味着从3.0.0到不包括4.0.0的所有包版本都应该是有效的。

正如PanzOr的评论中提到的,google guice似乎将包com.google.inject导出到了一个不同的版本中。最新的guice导出1.4版。所以看来hadoop客户端包可能已经坏了。因为它的导入范围使用的是包版本,而不是实际的包版本。

 类似资料:
  • 提前感谢。我有问题启动一个osgi捆绑包,它给出了这个错误消息:包/捆绑包将不安装。它编译,并构建好,当部署到Karaf时,它不会加载和抱怨丢失的布线包,看起来像是正在导出和导入。但是缺少一个版本id。 执行命令时出错:无法启动bundle mvn:com。通用电气。数字的passthru/passthrumt1。dataserviceimpl/1.0.1-SNAPSHOT在功能部件passthr

  • 以前部署的JDOM的OSGi包究竟是如何解决这些相同的依赖关系的?它们从来没有在捆绑进口包中列出?此外,如果我试图将这些作为项目的依赖项包含并嵌入它们,只会加剧问题。救命啊!

  • 我有一个包在 此文件夹包含: 然后我在中注册: 这样做后,网站根本无法工作。日志上说: PHP致命错误:未捕获错误:在/var/www/html/symproject/app/AppKernel中找不到类“MyCompany\Action\Provider\MyAppProvider\Bundle\MyAppBundle”。php:20\n堆栈跟踪:\n#0/var/www/html/sympro

  • 问题内容: 我在eclipse 3.5中创建了一个简单的插件项目,该项目仅存储第三方库供eclipse RCP应用程序中的其他捆绑软件使用。按预期工作:我编辑清单,导出所需的软件包,并将库添加到构建路径(项目构建路径以及清单构建路径)。 几天后,我在该项目中添加了另一个jar,执行相同的步骤(导出软件包,将库添加到构建路径),但是这次我无法从其他软件包中的导出软件包中导入类。该包在清单编辑器上显然

  • 问题内容: 在我的AEM项目的代码中看似无关紧要的更改之后,我的捆绑软件无法解决。检查日志后,我可以看到出现以下错误。 该项目在本地编译得很好,并且只有在容器尝试解决该捆绑包后,该问题才会出现。 我没有在任何更改中添加任何显式依赖项。项目对象模型与以前相同。顾名思义,这是一个核心Java软件包,因此我希望它会被System软件包公开。 我正在运行AEM支持的JDK 7,所以不要指望它与JVM兼容性

  • 我无法正确解析Sylius设置包。我的应用程序是Symfony标准应用程序。根据要求是条令/条令束~1.2 我现在的json:https://gist.github.com/Rvanlaak/f627a73a8d431600f8ba 解析sylius/setation-bundle给我以下错误: 将我的条令/条令包更改为~1。3@dev或1.2。0给出了错误: 在需要sylius/settings