【发布时间】:2018-12-28 11:43:32
【问题描述】:
我还不是经验丰富的 OSGi 用户,因此我遇到了一些问题。
我正在尝试使用 org.apache.servicemix.bundles.hadoop-client 作为外部 hadoop 提供程序,因为我不希望我的包包含所有这些类。
但是当我运行这组捆绑包(我的和org.apache.servicemix.bundles.hadoop-client)时,我收到以下错误:
错误:捆绑 org.apache.servicemix.bundles.hadoop-client [56] 错误启动文件:bundles/org.apache.servicemix.bundles.hadoop-client_2.8.1.1.jar (org.osgi.framework. BundleException:无法解析 org.apache.servicemix.bundles.hadoop-client [56](R 56.0):缺少要求 [org.apache.servicemix.bundles.hadoop-client [56](R 56.0)] osgi.wiring。包;(&(osgi.wiring.package=corg.osgi.framework.BundleException:无法解析 org.apache.servicemix.bundles.hadoop-client [56](R 56.0):缺少 requiremom.google.inject)(版本>=3.0.0)(!(version>=4.0.0))) 未解决的要求:[[org.apache.servicemix.bundles.hadoop-client [56ent [org.apache.servicemix.bundles.hadoop-client [56 ](R 56.0)] osgi.wiring.package; (&(osgi.wiring.package=com.google.inject)(ve](R 56.0)] osgi.wiring.package; (&(osgi.wiring.package= com.google.inject)(版本>=3.0.0)(!(版本>=4.0.0)))]) rsion>=3.0.0)(!(version>=4.0.0))) 未解决的要求:[[org.apache.servicemix.bundles.hadoop-client [56](R 56.0)] osgi.wiring.package; (&(osgi.wiring.package=com.google.inject)(version>=3.0.0)(!(version>=4.0.0)))] 在 org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111) 在 org.apache.felix.framework.Felix.startBundle(Felix.java:2117) 在 org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371) 在 org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) 在 java.lang.Thread.run(Thread.java:748)
我了解 org.apache.servicemix.bundles.hadoop-client 导入 com.google.inject 并希望其他一些捆绑包导出它。
我自己的包也导入了com.google.inject,并且可以正常工作。唯一的区别是我的包使用版本3.0 和hadoop 想要4.0。
com.google.inject 3.0 和 4.0 包都在 osgi_container/bundles 文件夹中。
我什至试图将我的捆绑包强制为 <export-package> com.google.inject 并且它“有效”。错误开始要求另一个库。 </stupid attemtps>
所以我被困在了这一点上。感谢您的建议。
【问题讨论】: