Обновление Spring Boot 3 вызывает nosuchmethoderror для clienthttpresponse.getstatuscode () - как поддержать Legacy SpriJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Обновление Spring Boot 3 вызывает nosuchmethoderror для clienthttpresponse.getstatuscode () - как поддержать Legacy Spri

Сообщение Anonymous »

Я обновляю свое основное приложение с Spring Boot 2.x до 3.x .
Обновление в основном успешное, за исключением вопроса о совместимости времени выполнения , вызванной 3-й стороны или устаревшими внутренними библиотеками, которые до сих пор зависят от Boot 2.x и Resttemplate api. /> Контекст:

[*] Мое основное приложение теперь использует:

Spring Boot: 3.x
[*] Spring Framework: 6.x
[*] jdk: 17 jdk: 17 />
[*] Однако у меня есть сотни общих SDK/библиотеки (некоторые внутренние, около 3-й стороны), которые:

Скомпилируется против boot 2.x
[*]. org.springframework.web.client.resttemplate < /code> < /li>
Внутренний звонок:

Код: Выделить всё

org.springframework.http.client.ClientHttpResponse#getStatusCode()
< /code>
ожидает, что он вернет org.springframework.http.httpstatus < /code>. < /li>
< /ul>
< /li>
< /ul>

После обновления я получаю следующую ошибку во время выполнения:

.java.lang.NoSuchMethodError: ‘org.springframework.http.HttpStatus org.springframework.http.client.ClientHttpResponse.getStatusCode()
Это происходит в клиенте.

Код: Выделить всё

Caused by: java.lang.NoSuchMethodError: ‘org.springframework.http.HttpStatus org.springframework.http.client.ClientHttpResponse.getStatusCode()’
at com.legacy.sdk.interceptor.LegacyInterceptor.intercept(LegacyInterceptor.java:46)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:900)
< /code>
Это имеет смысл, потому что Spring Framework 6.x Изменил сигнатуру метода: < /p>
старый (Spring Boot 2.x /Framework 5.x):
httpstatus clienthttpresponse.getstatuscode (); < /p>
new (spring boot 3.x /framework 6.x. Clienthttpresponse.getStatuscode (); < /p>
Старый метод был удален (не оправдывался), поэтому библиотеки, ожидающие, что старая подпись сбоя. Перенос мой собственный код для использования RestClient 
вместо Resttemplate .
Однако устаревшие зависимости по-прежнему используют Resttemplate , и я не могу их изменить. Clienthttpresponse#getStatuscode ()) внутри приложения Spring Boot 3?

Подробнее здесь: https://stackoverflow.com/questions/796 ... getstatusc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»