Проблемный JSTL-импорт: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.users_jsp. Как это исправить?
При попытке запустить сервер (использую Tomcat 10
) вижу такое сообщение об ошибке:
java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.users_jsp
Вот скриншот:
Комментируя различные участки обозначенного JSP
-файла, я понял, что Tomcat
'у не нравится мой JSTL
-импорт: если его убрать (и связанные с этим импортом участки кода), то вью отображается. Импорт я не писал вручную, его добавила среда разработки. Мне сложно понять, что с этим импортом не то.
В моём pom
-файле есть несколько зависимостей, связанных с сервлетами, а именно такие:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Это наверняка избыточный набор. Импорт, судя по всему, зависит только от "рыбной" зависимости. То, что их столько, отражает мои попытки решить проблему самостоятельно, экспериментируя с pom
'ом (в том числе следуя различным рекомендациям на StackOverflow
)
Возможно, ошибка как-то связана с этим покраснением (а может, нет):
Мне удалось избавиться от него добавив второй импорт из пакета Спринга вот так:
Но ошибка выше всё равно вылазит.
Вот вью целиком. Теги на закрытие проверял:
<%@ taglib prefix="j" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="t" uri="http://www.springframework.org/tags" %>
<%-- Эти закомментированные строчки – это то, что я пробовал добавлять в код --%>
<%--<%@ page contentType="text/html;charset=UTF-8" language="java" %>--%>
<%--<%@ taglib prefix="j" uri="http://java.sun.com/jstl/core" %>--%>
<%--<!DOCTYPE html>--%>
<html>
<body>
<h2>Users:</h2>
<table>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Last name</th>
<th scope="col">Age</th>
<th scope="col">Email</th>
<th scope="col">Operations</th>
</tr>
</thead>
<tbody>
<j:forEach var="user" items="${userList}">
<t:url var="updateButton" value="/updateUser">
<t:param name="userId" value="${user.id}"/>
</t:url>
<t:url var="deleteButton" value="/deleteUser">
<t:param name="userId" value="${user.id}"/>
</t:url>
<tr>
<td>${user.name}</td>
<td>${user.lastName}</td>
<td>${user.age}</td>
<td>${user.email}</td>
<td>
<input type="button" value="Update" onclick="window.location.href='${updateButton}'"/>
<input type="button" value="Delete" onclick="window.location.href='${deleteButton}'"/>
</td>
</tr>
</j:forEach>
</tbody>
</table>
<input type="button" value="Add" onclick="window.location.href = '/add'"/>
</body>
</html>
Я изучил первую страницу поисковой выдачи Гугла по запросу:
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views"
(с и без добавления слова "glassfish"). Это значит, что я был и на этой странице тоже. Не помогло.
Не знаю, принято ли тут давать ссылки на репо, но могу дать, если надо
Скажите, пожалуйста, как мне решить эту проблему?