我遇到了一个问题,同一个类的多个版本出现在我的类路径中。所讨论的类是javax.ws.rs.core.UriBuilder。我想使用的版本是由javax.ws.rs:javax.ws.rs-api:2.0.1带来的。但是,我们也使用Jira rest客户端库,它依赖于较早版本的jersey (com.sun.jersey:jersey-core),其中包含绑定在jar中的java.ws包。
下面是构建文件中的一个示例片段:
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在Jira客户机中找不到异常。
据我所知,目前我的选择是:
javax.ws包从旧球衣客户中排除在外。我想继续使用更新版本的球衣,这样#2将是我的理想解决方案,但我不确定这是否可能。有人知道怎么做吗?如果不可能的话,我愿意接受其他建议。
发布于 2015-06-19 21:04:30
我发现com.sun.jersey:泽西-core: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'
}
}发布于 2015-06-19 17:10:53
您可以排除如下所示的传递依赖模块:
compile ('org.glassfish.jersey.core:jersey-client:2.17') {
exclude group: 'javax.ws.rs'
exclude module: 'javax.ws.rs-api'
}参考文献:50.4.7这里
发布于 2022-04-12 10:41:16
如下所示排除组和模块。
例:
implementation('org.apache.httpcomponents:httpclient:4.5.13') {
exclude group: 'commons-codec', module: 'commons-codec'
}https://stackoverflow.com/questions/30942825
复制相似问题