Retrofit 依赖okhttp3报错_ 查看pom文件,解决冲突即可

Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;

at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:458)
at pe.freeopen.eosclient.client.http.Generator.createService(Generator.java:45)
at pe.freeopen.eosclient.EosClient.<init>(EosClient.java:42)

 

百度了两个案例。

retrofit 依赖okhttp3报错_要争气的博客-CSDN博客
https://blog.csdn.net/liangwenmail/article/details/118327411

retrofit是一款好用的http框架,在项目集成retrofit时,有时候会启动报关于okhttp错,如下:

the follollowing method did not exists:
okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;
解决思路:
排除retrofit 的okhttp3依赖,强依赖okhttp3 3.12.0版本

 

NoSuchMethodError: okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl; 问题原因及解决_Algowi 京保的博客-CSDN博客
https://blog.csdn.net/weixin_41020185/article/details/105959138
1.问题原由
由于项目中用到com.squareup.retrofit2 retrofit2.jar 2.5.0
retrofit2(2.5.0)用的是okhttp3(3.12.0)版,其中有有一段是这样引用的

    /**
     * Set the API base URL.
     *
     * @see #baseUrl(HttpUrl)
     */
    public Builder baseUrl(String baseUrl) {
      Objects.requireNonNull(baseUrl, "baseUrl == null");
      return baseUrl(HttpUrl.get(baseUrl));
    }
HttpUrl.get(baseUrl) 就是这段报的错
项目中okhttp3 包版本冲突,引用的是okhttp3(3.8.1)版,而(3.8.1)版没有HttpUrl.get(String url)方法 ,而是换成了HttpUrl.get(URL url)方法,因此报错,解决jar包冲突引用okhttp3(3.12.0)版本就好了。

 

本人解决方法:

===拓展 如何查看pom的依赖关系, 打开pom 右键 查看 diagrams 能看到报错的依赖,一目了然。

 

 因为本人项目中的 retrofit是2.5版本,里面依赖 okhttp  3.12.0版本。而本人想买中用的 okhttp 却是 3.10.0 ,所以有问题。

解决方法,要么把okhttp 改大成,3.12.0    要么把retrofit 由2.5版本改成2.4版本。

本人直接将2.5改成 2.4的版本就可以了。

<dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.10.0</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>converter-jackson</artifactId>
            <version>2.5.0</version>
        </dependency>

程序可以跑起来了,但是还有问题,

把retrofit 由2.5版本改成2.4版本。请求一些api返回不了数据。

把okhttp 改大成,3.12.0 ,某个api能返回数据。

 

 两种修改方式,看pom依赖都还有红线,... 应该是没有问题的,我看了其他正常的项目也是有红线。比如

 

 

 

目前 把okhttp 改大成,3.12.0  是可以正常跑了。


posted @ 2022-08-16 16:14  海蓝7  阅读(1501)  评论(0编辑  收藏  举报