当我尝试运行部署在 tomcat 中的项目时,出现类似
的错误java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
我对此进行了搜索,发现这可能是 servlet-api.jar 和 jsp-api.jar 的问题,但我已经将它们从 tomcat 复制到我的项目的类路径中,但我仍然遇到同样的错误。
Jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%--<a href="login.iface">Click Here</a> --%>
</body>
</html>
classpath 包含以下 jar 列表
antlr-2.7.6
commons-beanutils
commons-collections
commons-collections-3.1
commons-digester
commons-logging
commons-logging-1.1
dom4j-1.6.1
ejb3-persistence
hibernate3
hibernate-annotations
hibernate-commons-annotations
icefaces-1.8.2
icefaces-comps-1.8.2
javassist-3.9.0.GA
jsf-api
jsf-facelets
jsf-impl
mysql-connector-java-3.1.8-bin
slf4j-api-1.5.11
slf4j-simple-1.5.11
最佳答案
I have searched regarding that and found that it might be problem of servlet-api.jar and jsp-api.jar but i have copied both from tomcat to my project's classpath
看来您误解了答案。将它们放在您的 Web 应用程序的运行时类路径 (WEB-INF/lib) 中 是此问题的全部原因!摆脱它们。
servletcontainer 本身已经开箱即用地提供了这些库。从可能不同品牌/版本的任意容器中随机下载库以及 web 应用程序只会导致此类问题。如果您这样做是为了“修复”您的 webapp 项目中的编译错误,那么您应该以不同的方式解决它。有关操作方法,请参阅以下链接:
另见:
关于org.apache.jsp.index_jsp._jspInit 中的 java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892810/