Tomcat 10.0.4 не загружает сервлеты (классы @WebServlet) с ошибкой 404 [дубликат]
У меня проблема с моим первым веб-приложением. Я использую IntelliJ в качестве IDE и Tomcat в качестве веб-сервера. Каждый сервлет, к которому я пытался получить доступ, выдает ошибку 404. Даже если я скопирую несколько руководств YouTube, которые, кажется, работают как по маслу.
Кнопка в форме отправляет меня на: http://localhost:8080/IUBHQuiz/login
Можете ли вы сказать мне, что не так? Я схожу с ума.
По причинам авторского права API Servlet 5.0 (реализованный Tomcat 10) и API Servlet 4.0 (реализованный Tomcat 9) несовместимы: пространство имен API изменено с javax.* на jakarta.*. Это может проявляться по-разному:
Последнее сложнее всего диагностировать: в файлы журнала не записывается никаких ошибок, но приложение не работает. Причина такого поведения заключается в том, что @javax.servlet.WebServlet аннотации игнорируются: сервер выполняет сканирование @jakarta.servlet.WebServlet.
Поскольку все три проблемы имеют одну и ту же причину, все решения, предоставленные для вышеупомянутых вопросов, работают. В этом конкретном случае я бы посоветовал использовать инструмент миграции Tomcat для Jakarta EE.
Замечание: На сайте загрузки Tomcat отображается предупреждение, которое, к сожалению, многие люди не замечают:
Пользователи Tomcat 10 и более поздних версий должны знать, что в результате перехода с Java EE на Jakarta EE в рамках передачи Java EE Eclipse Foundation основной пакет для всех реализованных API изменился с javax.* на jakarta.*. Для этого почти наверняка потребуются изменения кода, позволяющие приложениям мигрировать с Tomcat 9 и более ранних версий на Tomcat 10 и более поздних.