Java _jspInit中的NullPointerException
当我通过键入地址从web浏览器访问它时,我在jsp页面的jspInit函数中得到了一个NullPointerException。我在网上搜索,大多数人都说这是因为在我的web-INF/lib文件夹中,有一个.jar文件jsp-api.jar与tomcat容器的jar文件(如中所示)相匹配。但是,我检查了lib文件夹,没有找到这样的jar文件。原因是什么?如何解决 以下是jsp错误页面:Java _jspInit中的NullPointerException,java,tomcat,Java,Tomcat,当我通过键入地址从web浏览器访问它时,我在jsp页面的jspInit函数中得到了一个NullPointerException。我在网上搜索,大多数人都说这是因为在我的web-INF/lib文件夹中,有一个.jar文件jsp-api.jar与tomcat容器的jar文件(如中所示)相匹配。但是,我检查了lib文件夹,没有找到这样的jar文件。原因是什么?如何解决 以下是jsp错误页面: type Exception report message description The server
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:538)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
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.NullPointerException
org.apache.jsp.index_jsp._jspInit(index_jsp.java:25)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
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)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
下面是我在tomcat6中的web应用程序的lib目录中的jar文件列表:
activation-1.1.jar
antlr-2.7.6.jar
bean-validator.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-codec-1.2.jar
commons-codec-1.4.jar
commons-collections-3.1.jar
commons-httpclient-3.1.jar
commons-lang-2.4.jar
commons-logging.jar
commons-logging-1.1.jar
cxf-api-2.2.9.jar
cxf-common-schemas-2.2.9.jar
cxf-common-utilities-2.2.9.jar
cxf-rt-bindings-soap-2.2.9.jar
cxf-rt-bindings-xml-2.2.9.jar
cxf-rt-core-2.2.9.jar
cxf-rt-databinding-jaxb-2.2.9.jar
cxf-rt-frontend-jaxws-2.2.9.jar
cxf-rt-frontend-simple-2.2.9.jar
cxf-rt-transports-http-2.2.9.jar
cxf-rt-ws-addr-2.2.9.jar
cxf-tools-common-2.2.9.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
emayclient-v2.jar
epcis-captureclient-0.5.0.jar
epcis-commons-0.5.0.jar
epcis-queryclient-0.5.0.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
hibernate3.jar
httpclient-4.1.jar
httpcore-4.1.jar
httpmime-4.1.jar
javassist-3.9.0.GA.jar
javax.annotation.jar
javax.ejb.jar
javax.enterprise.deploy.jar
javax.jms.jar
javax.management.j2ee.jar
javax.persistence.jar
javax.resource.jar
javax.security.auth.message.jar
javax.security.jacc.jar
javax.servlet.jar
javax.servlet.jsp.jar
javax.servlet.jsp.jstl.jar
javax.transaction.jar
jaxb-api-osgi.jar
jaxb-impl-2.2.jar
jboss-cache-1.4.1.GA.jar
jbosscache-core-3.1.0.GA.jar
jdom-2.0.4.jar
jsf-api.jar
jsf-impl.jar
json-20090211.jar
jsr311-api.jar
jstl-impl.jar
jta-1.1.jar
junit.jar
log4j-1.2.14.jar
m4uapi.jar
mail.jar
mysql-connector-java-5.1.21-bin.jar
org.hamcrest.core_1.1.0.v20090501071000.jar
oscache-2.1.jar
proxool-0.8.3.jar
qrgen-1.1.jar
saaj-api-1.3.jar
saaj-impl-1.3.2.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
stax-api-1.0-2.jar
swarmcache-1.0RC2.jar
textmagic-sms-api-1.0.jar
webservices-api-osgi.jar
weld-osgi-bundle.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.9.jar
xml-resolver-1.2.jar
XmlSchema-1.4.5.jar
zxing-core-1.7.jar
zxing-j2se-1.7.jar
假设JAR是正确的使用方向-我会检查它是否出现在
catalina.properties
文件(位于conf
下)的common.loader
属性中目录。假设JAR是正确的使用方向-我会检查它是否出现在catalina.properties
文件(位于conf
目录下)的common.loader
属性中。这是catalina.properties:common.loader=${catalina.base}/lib中我的common.loader行${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar、/var/lib/tomcat6/common/classes、/var/lib/tomcat6/common/*.jar
。您的意思是丢失或冲突的jar文件只是jsp-api.jar,还是其他jar文件出错了?您的common.loader
配置似乎是默认配置-因此假设您验证了类路径中的所有jar,并且没有发现冲突-这可能不是继续调查的方向。日志文件中有一行:2013年1月8日10:40:41 AM org.apache.catalina.loader.WebappClassLoader validateJarFile信息:validateJarFile(/var/lib/tomcat6/webapps/SCMPUSH2/WEB-INF/lib/javax.servlet.jar)-jar未加载。请参阅Servlet Spec 2.3,第9.7.2节。有问题的类:javax/Servlet/Servlet.class 2013年1月8日上午10:40:41 org.apache.catalina.startup.HostConfig deployDirectory
。这是否与问题有关?看起来javax.Servlet.Servlet
类在JVM配置中出现两次-这可能表明他加载了一个错误的JAR。搜索所有JAR以查看哪个JAR包含此类,然后将其从类路径中删除。注意:这只是一个猜测,我已将tomcat版本从6更改为7,错误没有发生,而启动期间的所有警告都像以前一样显示。因为我的tomcat6可以在之前的某段时间内工作,而came突然宕机,之后就再也回不去了,我可能不会说问题已经解决了。我只是希望tomcat7能够解决这个问题。但是我仍然想知道这是为什么…这是我在catalina.properties:common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib中的common.loader行${catalina.home}/lib/*.jar、/var/lib/tomcat6/common/classes、/var/lib/tomcat6/common/*.jar
。您的意思是丢失或冲突的jar文件只是jsp-api.jar,还是其他jar文件出错了?您的common.loader
配置似乎是默认配置-因此假设您验证了类路径中的所有jar,并且没有发现冲突-这可能不是继续调查的方向。日志文件中有一行:2013年1月8日10:40:41 AM org.apache.catalina.loader.WebappClassLoader validateJarFile信息:validateJarFile(/var/lib/tomcat6/webapps/SCMPUSH2/WEB-INF/lib/javax.servlet.jar)-jar未加载。请参阅Servlet Spec 2.3,第9.7.2节。有问题的类:javax/Servlet/Servlet.class 2013年1月8日上午10:40:41 org.apache.catalina.startup.HostConfig deployDirectory
。这是否与问题有关?看起来javax.Servlet.Servlet
类在JVM配置中出现两次-这可能表明他加载了一个错误的JAR。搜索所有JAR以查看哪个JAR包含此类,然后将其从类路径中删除。注意:这只是一个猜测,我已将tomcat版本从6更改为7,错误没有发生,而启动期间的所有警告都像以前一样显示。因为我的tomcat6可以在之前的某段时间内工作,而came突然宕机,之后就再也回不去了,我可能不会说问题已经解决了。我只是希望tomcat7能够解决这个问题。但是我还是想知道为什么。。。