gpt4 book ai didi

java - 解析 FuseESB 和 Jersey Servlet 中的两个依赖链

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:37 31 4
gpt4 key购买 nike

我正在尝试在 FuseESB 中部署 Jersey servlet(基于 apache serviceMix),但出现以下错误:

Error executing command: Unable to resolve module com.temp.myappserver [248.4] because it is exposed to package 'javax.ws.rs' from org.apache.servicemix.specs.jsr311-api-1.1 [139.0] and com.sun.jersey.jersey-core [274.0] via two dependency chains.

Chain 1:
com.temp.myappserver [248.4]
import: (&(package=javax.ws.rs)(version>=1.1.0)(!(version>=2.0.0)))
|
export: package=javax.ws.rs
org.apache.servicemix.specs.jsr311-api-1.1 [139.0]

Chain 2:
com.temp.myappserver [248.4]
import: (package=com.sun.jersey.spi.container.servlet)
|
export: package=com.sun.jersey.spi.container.servlet; uses:=com.sun.jersey.server.impl.application
com.sun.jersey.jersey-servlet [267.0]
import: (package=com.sun.jersey.server.impl.application)
|
export: package=com.sun.jersey.server.impl.application; uses:=javax.ws.rs
com.sun.jersey.jersey-server [265.0]
import: (package=javax.ws.rs)
|
export: package=javax.ws.rs
com.sun.jersey.jersey-core [274.0]

我知道为什么我会收到此错误 - 实际上 jersey-core jar list 导出 javax.ws.rs 和 serviceMix 取决于它自己的实现。有没有办法解决它或者我是否需要将我的服务转换为 CXF?

最佳答案

你已经正确分析了问题:Felix 无法解决这种情况,因为有两个 bundle 提供一个包,com.sun.jersey.jersey-core 没有导入它 ( it should ),并且您自己的包想要导入特定版本,该版本不同于 com.sun.jersey.jersey-core 提供的版本(因为该包确实没有提供版本声明,它默认为 0.0.0,因此它不符合您的要求)。

那么,你能做什么?

  • 最好的解决方案是让 jersey-core 包提供正确的导入,而不是将自己的版本强加给框架的其余部分。
  • 因为这可能需要一段时间,您可以在自己的导入中删除版本声明,让框架有机会将您连接到 jersey-core 包,而不是 servicemix一个。我知道这不是一个理想的情况,但这似乎是我们能做的最好的。

作为关于使用限制的一般说明,请参阅 Neil Bartlett's post on 'uses' .

关于java - 解析 FuseESB 和 Jersey Servlet 中的两个依赖链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275604/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com