- Версии 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
Мобильная версия