java - 比较方法在使用 Spring Rest Template 时违反了它的一般契约

标签 java spring spring-mvc spring-rest

我们的一个应用程序正在通过 Spring Rest 模板调用另一个应用程序。

HttpEntity<Object> httpEntity = new HttpEntity<>(null);
restTemplate.exchange(URL, HttpMethod.GET, httpEntity,String.class)

我们没有为请求明确设置任何 header 。我们遇到以下异常:

Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeHi(TimSort.java:895)
    at java.util.TimSort.mergeAt(TimSort.java:512)
    at java.util.TimSort.mergeCollapse(TimSort.java:437)
    at java.util.TimSort.sort(TimSort.java:241)
    at java.util.Arrays.sort(Arrays.java:1512)
    at java.util.ArrayList.sort(ArrayList.java:1454)
    at java.util.Collections.sort(Collections.java:175)
    at org.springframework.http.MediaType.sortBySpecificity(MediaType.java:441)
    at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:691)
    at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:743)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:567)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:448)

我们使用的 Java 版本是:1.8.0_45 和 Spring:4.1.6

如果有人能提供帮助那就太好了。如果需要,我很乐意提供更多详细信息。

感谢期待。

最佳答案

我在将 spring boot 从 2.2.X 迁移到 2.5.6 时遇到了这个问题。

这发生在我的其他服务从 @RestController 方法返回 String 时,但没有指定任何 MediaType

@GetMappingproduces 中指定媒体类型为我解决了这个问题:

@GetMapping("/this-returns-string", produces = MediaType.TEXT_PLAIN_VALUE)

关于java - 比较方法在使用 Spring Rest Template 时违反了它的一般契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901376/

相关文章:

java - TabLayout viewpager switch Tab2 only editext在Tab1上有效

java - 有什么想法可以实现带有缓冲 "inline edit"且完全可搜索的列表组件吗?

java - Ajax 请求不适用于 Spring Controller

spring-mvc - 如何使用@ControllerAdvice @ModelAttribute 定位特定的处理程序?

java - 仅在 Eclipse 中在打开的项目上运行 Maven 安装

java - 如何使用 PropertiesConfiguration 写入多行属性值?

java - Spring Security OAuth2 数据库——错误凭证错误

java - 缺少ServletRequestParameterException : Required String parameter 'cinClient' is not present

java - 如何使用 Spring MVC 获取所有文件名?

java - jetty升级后Spring MVC在WEB-INF文件夹中找不到jspx文件