-5

这是我的基于 java Struts 的 web 应用程序的目录结构和 webRoot 目录。

在此处输入图像描述

在此处输入图像描述

代码已成功编译,但是当我将其运行到浏览器时,它会出现 HTTP 状态 500 异常:

org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

java.lang.NullPointerException
    org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)
    org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

任何人都可以帮助我,请提前谢谢。

我尝试使用 war 文件运行外部 tomcat-7 但显示相同的错误,还发现此org.apache.jasper.JasperException: java.lang.NullPointerException但对我没有帮助。

这是 web.xml

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                         "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <display-name>Ilex Reports</display-name>
 <description>Report Server</description>
 <servlet>
  <servlet-name>rpt</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <init-param>
   <param-name>host</param-name>
   <param-value>localhost</param-value>
  </init-param>
  <init-param>
   <param-name>port</param-name>
   <param-value>80</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>rpt</servlet-name>
  <url-pattern>*.xo</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>/index.jsp</welcome-file>
 </welcome-file-list>
 <!-- Custom Tag Library Descriptors -->
 <taglib>
  <taglib-uri>http://jakarta.apache.org/tomcat/fb-taglib</taglib-uri>
  <taglib-location>/WEB-INF/tld/Element.tld</taglib-location>
 </taglib>
 <!-- Struts Tag Library Descriptors -->
 <taglib>
  <taglib-uri>/tags/struts-bean</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/tags/struts-html</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/tags/struts-logic</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/tags/struts-nested</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
 </taglib>
 <taglib>
  <taglib-uri>/tags/struts-tiles</taglib-uri>
  <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
 </taglib>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>
4

2 回答 2

1

做一件事,jsps被编译成java servlet,所以你可以检查代码并在适当的行看到。java文件我猜在tomcat的工作目录中。

误差线

org.apache.jsp.index_jsp._jspInit(index_jsp.java:22)

这是要查看的文件。

index_jsp.java
于 2013-07-17T05:06:51.993 回答
0

您可能遇到了版本不匹配、库版本不正确,或者之前的 JSP 编译损坏/部分。

查看我系统上的 Tomcat/work 目录(C:\Dev\Tomcat 6.0.35\work\Catalina\localhost\jr\org\apache\jsp\WEB_002dINF\jsp),您可以看到源代码你的 index_jsp.java 文件。

清理 Tomcat/work 目录以强制重新编译所有 JSP。

在 Tomcat 6 中,示例 JSP 中的 _jspInit() 如下所示:

public void _jspInit() {
    _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005furl_0026_005fvalue_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _005fjspx_005ftagPool_005fc_005fout_0026_005fvalue_005fescapeXml_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
}

从本质上讲,这些东西应该可以工作——所以几乎可以肯定你的配置存在问题。

于 2013-07-17T05:07:47.097 回答