【问题标题】:Error on external REST endpoint call using RestTemplate使用 RestTemplate 调用外部 REST 端点时出错
【发布时间】:2020-01-29 17:58:27
【问题描述】:

我的代码在到达这一行时会中断。

String resp = restTemplate.postForObject(URL, json, String.class);

在我的本地主机上它工作正常,但在 dev-env 服务器上,错误是:

java.lang.NoSuchMethodError 发生错误: com.microsoft.applicationinsights.agent.internal.coresync.impl.ImplementationsCoordinator.httpMethodFinished(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJ) V

dev-env 是 Azure 应用服务,包括 Java 8 和 Tomcat 9。

【问题讨论】:

    标签: java spring azure resttemplate


    【解决方案1】:

    这似乎是一个库问题:不知何故,您的环境有同一个库的两个不兼容版本。 跑吧

    mvn dependency:tree
    

    或手动删除无效的jar。

    【讨论】:

    • 异常表示方法名称“httpMethodFinished”,其参数类型为(String,...)未找到,因此您可能会错过包含“com.microsoft.applicationinsights.agent.internal.coresync”类的 jar。 impl.ImplementationsCoordinator" 不存在或存在同一个库的两个不兼容版本。
    • 嗯,有道理,我将尝试检查我的 java 应用程序及其依赖项的 azure application insight
    • 谢谢,问题已解决。我已经标记了您的答案,因为您的答案给出了有关依赖性问题的提示,并且我已经发布了问题的确切位置。
    【解决方案2】:

    我得到了问题和解决方案(对于其他将遇到与发布的完全相同的问题的人): 问题:restTemplate.postForObject() 失败,存在冲突,因为 我正在使用setConnectTimeout(10000);

    @Bean
    public RestTemplate restTemplate(){
      return new RestTemplate(clientHttpRequestFactory());
    }
    private ClientHttpRequestFactory clientHttpRequestFactory(){
      HttpComponentsClientHttpRequestFactory .......
      factory.setConnectTime(...);
      return factory
    }
    

    当我从 restTemplate 中删除 clientHttpRequestFactory() 并配置默认值而没有连接超时时,问题得到了解决。现在不冲突了。

    @Gaurav 我会标记你的答案,因为你的回复让我了解了依赖冲突问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多