2015-05-20 155 views
-1

當我啓動我的Struts 2應用程序時,我得到了500個代碼。這是堆棧。未找到JSP類:java.lang.ClassNotFoundException:org.apache.jsp.login_jsp

org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.login_jsp 
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:176) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96) 

root cause 

java.lang.ClassNotFoundException: org.apache.jsp.login_jsp 
java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:131) 
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:62) 
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96) 

回答

0

方法getDispatcherType()(類ServletRequest)被添加到版本3.0中的Servlet API。所以看起來你是運行的Tomcat版本是6.x或更低版本,它在3.0之前使用了Servlet API,因此該方法是未知的。在IDE內部,顯然是針對3.0版本的Servlet API編譯的。

您必須使用Tomcat 7+來使用Servlet API 3.0方法。

0

顯然,login.jsp有一些編譯錯誤。試着研究一下。另外,在這裏發佈代碼。

+0

但IDE報告沒有編譯錯誤。我只有在試圖訪問jsp時纔得到ClassNotFound。 –

+0

發佈代碼和完整的堆棧跟蹤(我認爲你錯過了跟蹤的根本原因部分)。 –

+1

'在生成的java文件中出現錯誤:[C:\ Users \ guoli \ .IntelliJIdea14 \ system \ tomcat \ Unnamed_Typle_2 \ work \ Catalina \ localhost \ ROOT \ org \ apache \ jsp \ login_jsp。 java] 方法getDispatcherType()未定義類型HttpServletRequest' –

-1
<%@ include file="/WEB-INF/pco/Init.jsp"%> 

<HTML> 
<HEAD> 
<TITLE> 
NMTC Automation Summary 
</TITLE> 
</HEAD> 
<BODY> 
<center> 
<H2> 
Network Management Task Controller<br> 
Administration Tool<br> 
</H2> 
<table> 
<% if (userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "pco") || 
     userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "pcoview")) 
    { 
%> 
<tr align="center"><td><a href="../pco/PCO.jsp?level=1">T1 PCO Automation</a></td></tr> 
<% 
    } 
%> 

<% if (userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "t3pco") || 
     userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "t3pcoview")) 
    { 
%> 
<tr align="center"><td><a href="../t3pco/PCO.jsp?level=3">T3 PCO Automation</a></td></tr> 
<% 
    } 
%> 

<% if (userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "nise")) 
    { 
%> 
<tr align="center"><td><a href="../nise/NISE.jsp">NISE</a></td></tr> 
<% 
    } 
%> 

<tr><td>&nbsp;</td></tr> 
<tr align="center"><td><a href="UserChangePasswd.jsp">Change Your Password</a></td></tr> 

<% if (userAuthorization.isPrincipalInRole((String)session.getAttribute("SecPTUserIDname_&"), "admin")) 
    { 
%> 
<tr align="center"><td><a href="../admin/PassAdmin.jsp">Administer User IDs</a></td></tr> 
<tr align="center"><td><a href="../admin/PCORule.jsp">Administer PCO Automation Rule Table</a></td></tr> 
<% 
    } 
%> 

<tr><td>&nbsp;</td></tr> 
<tr align="center"><td><a href="../login.jsp?LogOut=true"><b>Logoff</b></a></td></tr> 
</table> 
</center> 
</BODY> 
</HTML> 
+0

當給出答案時,最好給出[一些解釋爲什麼你的答案](http://stackoverflow.com/help/how-答案)是唯一的答案。 –