当我尝试运行在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
我对此进行了搜索,发现这可能是servlet-api.jar和jsp- api.jar的问题,但我已将两者从tomcat复制到了我项目的classpath中
看来您误解了答案。将它们放在您的Web应用程序的运行时类路径(WEB-INF / lib)中 是 造成此问题的全部原因!摆脱它们。
servlet容器本身 已经 随包装提供了那些库。从可能具有不同版本/版本的任意容器中提供随机下载的库以及webapp只会导致此类问题。如果这样做是为了“修复” webapp项目中的编译错误,则应该以不同的方式解决它。请参阅以下链接,了解如何: