运行我的java web项目时,我遇到了一个奇怪的异常。在我保存对我的一个JSP的一些更改后,似乎“随机”发生了这种情况。我永远不记得改变任何设置。在此项目之前,我从未遇到任何类似的错误,之前找到HubPortal
类没有问题。
这是完整的堆栈跟踪:
org.apache.jasper.JasperException: An exception occurred processing JSP page /hubmainpage.jsp at line 7
4: %>
5: <%
6: String responsepage = request.getParameter("show");
7: HubPortal hp = new HubPortal();
8: List processList = hp.getProcessList();
9: List clientList = hp.getClientList();
10: List transList = hp.getTransactionTypeList();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
org.apache.jsp.hubmainpage_jsp._jspService(hubmainpage_jsp.java:783)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
com.middleware.hts.HubPortal.<clinit>(HubPortal.java:23)
org.apache.jsp.hubmainpage_jsp._jspService(hubmainpage_jsp.java:66)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
关于为什么我突然遇到这个错误的任何想法?
答案 0 :(得分:5)
7: HubPortal hp = new HubPortal(); root cause java.lang.NoClassDefFoundError: org/apache/log4j/Logger com.middleware.hts.HubPortal.<clinit>(HubPortal.java:23)
这意味着HubPortal
类需要webapp的运行时类路径中缺少log4j jar file。您需要将它放在与包含HubPortal
类的JAR文件相同的位置,例如/WEB-INF/lib
文件夹或HubPortal
类所在的任何位置。
答案 1 :(得分:3)
除了每个人的回答,我想说一些 提示对于java.lang.NoClassDefFoundError或java.lang.ClassNotFoundException:
%CONTEXT-ROOT%/WEB-INF/Classes(Servlet directory)
或
如果依赖类可以作为JAR使用,则它位于%CONTEXT-ROOT%/WEB-INF/lib/xyz.jar
内。请记住容器需要在运行时访问这些类! 答案 2 :(得分:0)
看起来您的HubPortal类无法找到Logger类,可以将其作为web-inf的一部分提供。
答案 3 :(得分:0)
这是因为你没有部署log4j jar。这应该是你的战争的一部分,在WEB-INF/lib
。