Java Web应用部署在SAE平台上测试时出现以下错误:
HTTP ERROR 500
Problem accessing /. Reason:
Server Error
Caused by:
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:101)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at com.sina.sae.jasper.servlet.SaeJspServletWrapper.service(SaeJspServletWrapper.java:225)
at com.sina.sae.jasper.servlet.SaeJspServlet.serviceJspFile(SaeJspServlet.java:238)
at com.sina.sae.jasper.servlet.SaeJspServlet.service(SaeJspServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:538)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)
at com.sina.sae.servlet.SaeServletHandler.doHandle(SaeServletHandler.java:49)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
at com.sina.sae.webapp.SaeWebAppContext.doScope(SaeWebAppContext.java:166)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:284)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:115)
at com.sina.sae.facade.SaeRequestDispatcher.forward(SaeRequestDispatcher.java:27)
at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:552)
at org.eclipse.jetty.servlet.DefaultServlet.doPost(DefaultServlet.java:592)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:538)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)
原因之一是Java Web应用引用了额外的servlet_api.jar这与SAE平台的Servlet包产生冲突,如果是这种情况,删除servlet_api.jar包,具体操作时注意将项目里的.classpath文件里的引用路径给删除,对于其他的引用要使用相对路径。