Ад зависимостей Legacy SpringJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ад зависимостей Legacy Spring

Сообщение Anonymous »

Работа над устаревшим проектом Spring в устаревшей среде с Java 11. Обновить версию Java непросто — требуются права администратора. Я застрял в сети проблем, коренящихся в версиях зависимостей, которые я использую. Что я сделал на данный момент:
  • Версии Spring Framework и MVC были 6.2.7. Сборка не удалась: файл класса имеет неправильную версию 61.0 (java 17), должна быть 55.0 (java 11). Поэтому я изменил версию Spring на более старую версию, которая компилируется для Java 11.
  • После этого изменения сборка прошла успешно, но компиляция завершилась неудачей из-за ошибок. Невозможно получить доступ к файлу класса javax.servlet.http.HttpServlet для javax.servlet.http.HttpServlet не найден из этой строки
    Wrapper servlet = Tomcat.addServlet(tomcatCtx, "dispatcherServlet", dispatcherServlet);
    указывает, что текущая версия Spring требует javax вместо jakarta, поэтому я добавил зависимость javax.
  • Теперь, добавляя зависимость javax, я столкнулся с проблемами с Tomcat, поскольку статический метод addServlet теперь требует строку
    в качестве третьего аргумента вместо экземпляра класса.
    Wrapper servlet = Tomcat.addServlet(tomcatCtx, "dispatcherServlet", dispatcherServlet);
    Поэтому я изменил версию tomcat на более старую, более совместимую версию (9.0.83).
  • При переходе на совместимую версию tomcat я получаю полный отказ от Spring-mvc.
Код:
public class ApplicationLauncher {

public static void main(String[] args) throws LifecycleException {

Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
tomcat.getConnector();

Context tomcatCtx = tomcat.addContext("host", null);

WebApplicationContext appCtx = createApplicationContext(tomcatCtx.getServletContext());
DispatcherServlet dispatcherServlet = new DispatcherServlet(appCtx);
Wrapper servlet = Tomcat.addServlet(tomcatCtx, "dispatcherServlet", dispatcherServlet);
servlet.setLoadOnStartup(1);
servlet.addMapping("/*");

tomcat.start();
}

public static WebApplicationContext createApplicationContext(ServletContext servletContext){
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(PdfInvoicesConfiguration.class);
ctx.setServletContext(servletContext);
ctx.refresh();
ctx.registerShutdownHook();
return ctx;
}
}

Я думаю, что в некоторых версиях, которые я использую, есть серьезные изменения в именах, но я не могу сказать, какую именно. Кто-нибудь сталкивался с этой проблемой раньше? Версии, которые я использую, приведены ниже:

11
11
UTF-8




org.apache.tomcat.embed
tomcat-embed-core
9.0.83


org.springframework
spring-context
5.3.33


org.springframework
spring-webmvc
5.3.33


org.projectlombok
lombok
1.18.12
true


com.fasterxml.jackson.core
jackson-databind
2.19.0


javax.servlet
javax.servlet-api
4.0.1
provided




Подробнее здесь: https://stackoverflow.com/questions/797 ... dency-hell
Ответить

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

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

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

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

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