Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoSuchMethodError:okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl在使用改型2时_Java - Fatal编程技术网

NoSuchMethodError:okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl在使用改型2时

NoSuchMethodError:okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl在使用改型2时,java,Java,我使用改装2发送http请求,代码如下: ReconcileService service = RetrofitUtil.InitRetrofitOkhttp().create(ReconcileService.class); Call<ResponseBody> call = service.page(request); ResponseBody body = call.execute().body();

我使用改装2发送http请求,代码如下:

            ReconcileService service = RetrofitUtil.InitRetrofitOkhttp().create(ReconcileService.class);
            Call<ResponseBody> call = service.page(request);
            ResponseBody body = call.execute().body();
            String str = new String(body.bytes(), "UTF-8");
            ObjectMapper mapper = new ObjectMapper();
            Response response = mapper.readValue(str, Response.class);
gradle :soa-illidan:soa-illidan-service:dependencies --configuration runtimeClasspath|grep -v "(*)"|grep -C 10 "okhttp"
但运行此代码时,它会给我提示:

    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055) [spring-webmvc-5.1.13.RELEASE.jar!/:5.1.13.RELEASE]
    ... 55 common frames omitted
Caused by: java.lang.NoSuchMethodError: okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;
    at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:492) ~[retrofit-2.8.1.jar!/:na]
    at com.sportswin.soa.misc.biz.common.RetrofitUtil.InitRetrofitOkhttp(RetrofitUtil.java:42) ~[soa-misc-biz-1.0.0-SNAPSHOT.jar!/:na]
    at com.sportswin.soa.illidan.controller.impl.tenant.ReconcilationController.getRes(ReconcilationController.java:38) ~[classes!/:na]
    at com.sportswin.soa.illidan.controller.impl.tenant.ReconcilationController.tenantPage(ReconcilationController.java:31) ~[classes!/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) [spring-web-5.1.13.RELEASE.jar!/:5.1.13.RELEASE]
我试图从互联网上找到答案,但所有人都要求升级okhttp版本。但现在我的okhttp版本已经是4.0了,这是我的gradle配置:

api("com.squareup.okhttp3:okhttp:4.0.0")
api "com.squareup.retrofit2:converter-gson:2.8.1"

那么问题出在哪里?我应该如何解决它呢?

我使用gradle命令检查引用,如下所示:

            ReconcileService service = RetrofitUtil.InitRetrofitOkhttp().create(ReconcileService.class);
            Call<ResponseBody> call = service.page(request);
            ResponseBody body = call.execute().body();
            String str = new String(body.bytes(), "UTF-8");
            ObjectMapper mapper = new ObjectMapper();
            Response response = mapper.readValue(str, Response.class);
gradle :soa-illidan:soa-illidan-service:dependencies --configuration runtimeClasspath|grep -v "(*)"|grep -C 10 "okhttp"
并找到okhttp jar的实际版本是3.8.1:

$ gradle :soa-illidan:soa-illidan-service:dependencies --configuration runtimeClasspath|grep -v "(*)"|grep -C 10 "okhttp"
\--- project :soa-illidan:soa-illidan-api
     +--- log4j:log4j:1.2.17
     +--- org.apache.commons:commons-collections4:4.4
     +--- org.apache.commons:commons-lang3:3.9
     +--- project :soa-misc-biz
     |    +--- log4j:log4j:1.2.17
     |    +--- org.apache.commons:commons-collections4:4.4
     |    +--- org.apache.commons:commons-lang3:3.9
     |    +--- com.github.pagehelper:pagehelper:5.1.11
     |    |    \--- com.github.jsqlparser:jsqlparser:2.0 -> 2.1
     |    +--- com.squareup.okhttp3:okhttp:4.0.0 -> 3.8.1
     |    |    +--- com.squareup.okio:okio:2.2.2
     |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.60 -> 1.2.71
     |    |    |         +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.2.71
     |    |    |         \--- org.jetbrains:annotations:13.0
     |    +--- com.squareup.retrofit2:converter-gson:2.8.1
     |    |    +--- com.squareup.retrofit2:retrofit:2.8.1
     |    |    \--- com.google.code.gson:gson:2.8.5 -> 2.8.6
     |    +--- project :soa-misc
     |    |    +--- log4j:log4j:1.2.17
     |    |    +--- org.apache.commons:commons-collections4:4.4
Errors occurred while build effective model from /Users/dolphin/.gradle/caches/modules-2/files-2.1/com.alibaba/druid/1.1.9/e6a9ff9e84dd1c498d9e12373331fbacd92d330a/druid-1.1.9.pom:
    'dependencies.dependency.systemPath' for com.alibaba:jconsole:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/jconsole.jar in com.alibaba:druid:1.1.9
    'dependencies.dependency.systemPath' for com.alibaba:tools:jar must specify an absolute path but is ${env.JAVA_HOME}/lib/tools.jar in com.alibaba:druid:1.1.9
因此,我在
buil.gradle
中添加了这一点,以强制使用okhttp的4.0.0版本:

 resolutionStrategy {
            eachDependency { DependencyResolveDetails details ->
               
                if (details.requested.group == 'com.squareup.okhttp3') {
                    details.useVersion "4.0.0"
                }
            }
        }
问题解决了。希望对你有帮助