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

时间:2011-11-20 21:56:55

标签: java jsp error-handling tiles servletexception

将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现在不喜欢什么,因为现在我不知道应该检查什么?

UPDATE:我从代码中删除了除Welcome和taglib之外的所有内容,以便leftlogged.jsp看起来如下:

Welcome ${USERNAME}!<br />

错误消息继续,并且没有更改任何内容。

关于可能意味着什么的进一步想法是错误的?

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题(ClassNotFound ... WEB_002dINF ...) 我通过删除

来修复它
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>

来自我的pom.xml

答案 1 :(得分:0)

或者,如果删除javax.servlet破坏了您的应用程序,并且您正在从另一个来源继承它(例如,您的团队将共享资源放入的常见项目),请尝试添加

<scope>provided</scope> 
javax.servlet的依赖项标签中的