ServletException в '/left.do': java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.leftlogged_jsp

После интеграции ESAPI в форму входа я получаю проблему с рендерингом и ошибку после успешного входа в систему.

Ошибка, сгенерированная в браузере, гласит:

   javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: ServletException in '/left.do': java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.leftlogged_jsp

И в журнале отладки сервера указано следующее:

SEVERE: Servlet.service() for servlet [ActionServlet] in context with path [/FIXED] 
threw exception [javax.servlet.ServletException: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: ServletException in '/left.do': java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.leftlogged_jsp] with root cause
java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.tiles.leftlogged_jsp

Странно то, что при интеграции esapi я даже не прикасался ни к одной jsp-странице, и до этого все работало. Я только изменил пару страниц Java, но теперь получаю это после успешного входа в систему.

В обоих сообщениях об ошибках есть еще что-то, что я могу включить, если это будет полезно. Поскольку я не модифицировал файл leftlogged.jsp, но именно он создает проблемы, я подумал, что включу его, так как он может быть полезен.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
Welcome ${USERNAME}!<br />
<logic:messagesPresent message="false">
  <html:messages id="msg">
    <span class="error"><bean:write name="msg" /></span><br />
  </html:messages>
</logic:messagesPresent>
<logic:messagesPresent message="true">
  <html:messages id="msg" message="true">
    <strong><bean:write name="msg" /></strong><br />
  </html:messages>
</logic:messagesPresent>
Your account balance is <fmt:formatNumber pattern="\$#,##0.00" value="${BALANCE}" />
<br />
<br />
Add Balance:<br />
<html:form method="POST" action="/addbalance">
<table border="0" width="100%">
<tr>
<td class="prompt">Type:</td>
<td class="ui"><html:select property="vendor">
<html:option value="">-- SELECT</html:option>
<html:option value="VISA">VISA</html:option>
<html:option value="MASTERCARD">MASTERCARD</html:option>
</html:select>
</td>
</tr>
<tr>
  <td class="prompt">Number:</td>
  <td class="ui"><html:password property="cc" /></td>
</tr>
<tr>
  <td class="prompt">Amount:</td>
  <td class="ui"><html:text property="amount" /></td>
</tr>
<tr>
  <td colspan="2" class="ui" style="text-align: center"><input type="submit" value="Add" /></td>
</tr>
</table>
</html:form>
<br />
<br />
<a href="<c:url value="/friends.do" />">Friends</a><br />
<a href="<c:url value="/profile.do" />">Profile</a><br />
<a href="<c:url value="/index.jsp" />">CD's</a>
<br />
<br />
<a href="<c:url value="/logout.do" />">Log Out</a>

Может ли кто-нибудь объяснить мне, что именно Eclipse не нравится, потому что прямо сейчас я не уверен, что мне следует проверить?

ОБНОВЛЕНИЕ: я удалил из кода все, кроме приветствия и библиотеки тегов, поэтому файл leftlogged.jsp выглядит следующим образом:

Welcome ${USERNAME}!<br />

Сообщение об ошибке продолжается и ничего не изменилось.

Любые дальнейшие мысли о том, что это может означать, неверно?


person Turk    schedule 20.11.2011    source источник
comment
Не удалось скомпилировать JSP. Обычно вместо этого контейнер должен был выдавать ошибку компиляции JSP, но она каким-то образом была подавлена ​​(возможно, из-за использования старой версии контейнера или из-за влияния сторонних библиотек). Выполните базовую отладку. Удалите все тело JSP, за исключением taglibs и строки приветствия. Это работает? Добавляйте теги один за другим, пока не произойдет сбой. Или уже не получается? Возможно, в пути к классам отсутствует одна из taglib.   -  person BalusC    schedule 21.11.2011
comment
Спасибо. Я попробую это и вернусь к вам с результатами.   -  person Turk    schedule 21.11.2011
comment
Я обновил основной вопрос с дополнительной информацией. Еще раз спасибо.   -  person Turk    schedule 21.11.2011
comment
Удалите все taglibs и повторите попытку. Это работает? Добавляйте их по одному, пока не выйдет из строя. Тогда это именно та taglib, которая отсутствует или конфликтует в пути к классам или неправильно определена в web.xml.   -  person BalusC    schedule 21.11.2011
comment
Обновлено снова. Была только приветственная очередь. Никаких тегов вообще. Тот же результат.   -  person Turk    schedule 21.11.2011
comment
Извините, я не знаю. Вероятно, это сбой в используемой IDE/сервере. Попробуйте пересобрать проект и почистить сервер.   -  person BalusC    schedule 21.11.2011
comment
Не проблема. Спасибо за попытку.   -  person Turk    schedule 21.11.2011


Ответы (2)


У меня была такая же проблема (ClassNotFound... WEB_002dINF...) Я исправил ее, удалив

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>

из моего pom.xml

person bitdancer    schedule 07.05.2014

В качестве альтернативы, если удаление javax.servlet нарушает работу вашего приложения и вы наследуете его из другого источника (например, из общего проекта, в который ваша команда помещает общие ресурсы), попробуйте добавить

<scope>provided</scope> 

в теге зависимости для javax.servlet.

person LConrad    schedule 17.10.2018