【发布时间】:2016-02-28 02:33:33
【问题描述】:
我有一个在 Apache ServiceMix 4 上运行的 CXF 服务,我正在尝试将它安装在 Fuse 6.2 上,因为我们正计划从 apache servicemix 迁移到 fuse。问题是依赖关系。在这个特定实例上,我的服务依赖于 javax.jws:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
如果我将我的网络服务添加到配置文件中,我会收到此错误:
Caused by: java.lang.Exception: Unable to start bundle 285: Unresolved constraint in bundle XPTO [285]: Unable to resolve 285.1: missing requirement [285.1] osgi.wiring.package; (&(osgi.wiring.package=javax.jws)(version>=2.0.0)(!(version>=3.0.0)))
所以我尝试手动将 jaxws-api v2.1 添加到配置文件中:
JBossFuse:admin@root> profile-edit -b mvn:javax.xml.ws/jaxws-api/2.1 test-xpto
Adding bundle:mvn:javax.xml.ws/jaxws-api/2.1 to profile:test-xpto version:1.0
但这让我抛出一个异常
org.osgi.framework.BundleException: Unsupported 'Bundle-ManifestVersion' value: 1
所以我有几个问题:
1) 有没有办法检查哪个包提供了特定的 JAR?似乎安装了 javax.jws 的 3.0.0 版,但我确定导出它的包是什么。
2) 有没有办法克服第三方 JAR 的 Bundle-ManifestVersion: 1?无需下载源代码并制作新的 POM,即...
3) 必须始终“手动”管理依赖项吗? fuse 是否有机制通过公共 maven 存储库下载所有必需的 jar?毕竟他们在我的项目的 POM 上被识别出来了。
【问题讨论】: