我遇到了同一个类的多个版本显示在我的类路径中的问题。有问题的班级是javax.ws.rs.core.UriBuilder
。我想使用的版本是由javax.ws.rs:javax.ws.rs-api:2.0.1
引入的。然而,我们也使用Jira休息客户端库,它依赖于旧版泽西岛(com.sun.jersey:jersey-core
),该泽西岛包含捆绑在其jar中的java.ws包。从Gradle依赖中排除软件包
这里是从构建文件的示例片段:
dependencies {
compile 'com.atlassian.jira:jira-rest-java-client-core:2.0.0-m31'
compile 'javax.ws.rs:javax.ws.rs-api:2.0.1'
compile 'org.glassfish.jersey.core:jersey-client:2.17'
}
我无法删除com.sun.jersey:jersey-core
,因为它来自新版本使用不同的包名,并会造成类DEF没有找到吉拉客户例外。
至于我可以告诉大家,我在这一点上的选项有:
- 恢复使用泽西1.x和它的实现JSR311 的
- 莫名其妙地gradle这个从旧球衣排除
javax.ws
包客户。
我想继续使用更新版本的球衣,所以#2将是我理想的解决方案,但我不确定是否有可能。有谁知道如何去做这件事?如果这是不可能的,我接受其他建议。
问题是,javax不是传递依赖项,它包含在com.sun.jersey:jersey-core jar中。 http://mvnrepository.com/artifact/com.sun.jersey/jersey-core/1.17请参阅软件包部分中的javax.ws软件包。 – matheeeny
是不是http://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client/2.17这是什么你添加为你的问题的依赖?这里是javax.wx.rs的依赖关系。 – RaGe
是的,我加入了org.glassfish.jersey.core,但是Jira带来了con.sun.jersey,它包含了它的jar包中的javax.ws.rs。 – matheeeny