2015-06-19 99 views
2

我遇到了同一个类的多个版本显示在我的类路径中的问题。有问题的班级是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. 恢复使用泽西1.x和它的实现JSR311
  2. 莫名其妙地gradle这个从旧球衣排除javax.ws包客户。

我想继续使用更新版本的球衣,所以#2将是我理想的解决方案,但我不确定是否有可能。有谁知道如何去做这件事?如果这是不可能的,我接受其他建议。

回答

0

我发现com.sun.jersey:球衣核心:1.19没有捆绑使用javax。 ws.rs类文件,而是将它们列为编译时间依赖项。将此片段添加到我的build.gradle中修复了这个问题。

configurations.all { 
    resolutionStrategy { 
    // For a version that doesn't package javax.ws 
    force 'com.sun.jersey:jersey-core:1.19' 
    } 
} 
1

可以排除传递依赖模块是这样的:

compile ('org.glassfish.jersey.core:jersey-client:2.17') { 
     exclude group: 'javax.ws.rs' 
     exclude module: 'javax.ws.rs-api' 
    } 

裁判:50.4.7 here

+0

问题是,javax不是传递依赖项,它包含在com.sun.jersey:jersey-core jar中。 http://mvnrepository.com/artifact/com.sun.jersey/jersey-core/1.17请参阅软件包部分中的javax.ws软件包。 – matheeeny

+0

是不是http://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client/2.17这是什么你添加为你的问题的依赖?这里是javax.wx.rs的依赖关系。 – RaGe

+0

是的,我加入了org.glassfish.jersey.core,但是Jira带来了con.sun.jersey,它包含了它的jar包中的javax.ws.rs。 – matheeeny

相关问题