Проблема Spring Boot 3 JSP

У меня возникли проблемы с JSP после перехода на Java 17 и Spring Boot 3. Я знаю, что нам нужно использоватьjakarta.*вместо , но есть ли что-то, что мне не хватает? Я использую Spring Tools 4 и просто запускаю базовое веб-приложение с использованием JSP. При использовании следующих зависимостей

        <dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
  </dependency>

Проект запускается, но я получаю следующую ошибку

      The superclass "javax.servlet.http.HttpServlet", determined from the Dynamic Web Module facet version (2.5), was not found on the Java Build Path

Я могу избавиться от этого, добавив зависимость сервлета javax

        <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
  </dependency>

Но это противоречит использованиюjavax.*зависимости с Spring Boot 3.

Я прочитал эти статьи и попытался добавитьjakarta.servlet.jspзависимость без везения.

https://debugah.com/solved-tomcat10-error-jakarta-servlet-servletexception-class-com-kuang-servlet-helloservlet-is-not-a-servlet-22749/

https://howtodoinjava.com/java/обработка-исключений/решен-те-суперкласс-javax-сервлет-http-httpservlet-was-not-found-on-the-java-build-path-in-eclipse/

1 ответ

Решено!

Все, что мне нужно было сделать, это зайти в Project Properties и в Project Faces изменить мой динамический веб-модуль с 2.5 на 5.0.

Предупреждение JSTL можно подавить в разделе Свойства->Веб->JSP-файлы->Проверка->Пользовательские действия->Другие проблемы с классом TagExtraInfo (просто измените «Предупреждение» на «Игнорировать»)

Другие вопросы по тегам