Android Studio中解决jar包重复依赖致使的代码编译错误

在本来的代码中已经使用了OKHTTP和rxjava,而后今天依赖retrofit的时候一直报错java

Program type already present: okhttp3.internal.ws.RealWebSocket$1.classreact

说是我重复添加了OKHTTP的包,但其实我直接把OKHTTP的依赖注释掉都没用,只要依赖retrofit相关的就必定报这个错git

网上推荐添加如下配置,但我尝试后无效,大家能够试试github

    configurations.all {
        // OkHttp 3.5.0+ includes the websockets API, so we need this to prevent a conflict
        exclude module: 'okhttp-ws'
    }

最后我在这里https://github.com/facebook/react-native/issues/12646找到一个答案,catch成功web

解决方法以下:react-native

由于是okhttp3.5.0以后的版本才加入的okhttp-ws,因此把版本强制控制在3.5.0如下:websocket

configurations.all {
      resolutionStrategy.force 'com.squareup.okhttp3:okhttp:3.4.1'
 }

从新build,代码再也不报错socket

 

 

-------------------------------------emm,如下是我次日的打脸续集----------------------------------------gradle

 

昨天直接使用强制控制版本以后觉得就没问题了,今天把retrofit的相关代码写了,运行起来才发现3.5.0如下的有个okhttp.ws里的方法找不到,又是各类方法一通试,仍是不行,直到在一篇博客上看到一点曙光,照方法执行后,解决了问题(此次是真的解决了ui

首先在log信息中找到你重复的地方,是哪一个类或包重复了,好比我昨天讲的本身是okhttp里的RealWebSocket类重复,那么在studio中anywhere搜索(快捷键->双击shift)RealWebSocket

看到两个重复的RealWebSocket类,能够直接看到它的目录地址

而后想到本身昨天刚添加的一堆retrofit相关依赖

implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'

OK,如今就算是找到问题根源(其实一直都很明白问题就在这儿 哈哈哈

接下来很简单: 
在AS中,选择以project显示项目,找到最下面的External Libraries

 

而后找到相对应的类库,如图依次点开以后发现了一个pom.xml:

 

这里面就是关于这个jar的一些配置文件,点开以后找到你重复包的groupID复制下来:

而后到build.gradle里,找到那个依赖,添加{exclude group: 'com.squareup.okhttp3'} 

 

到此问题就解决了,若是你有多个重复依赖的话,就按上面的方法一个个去重。

亲亲,这边建议您有其余jar包重复的问题也能够尝试用这个方法解决呢

相关文章
相关标签/搜索