Java Servlet - 空指针异常& .jar没有加载

时间:2014-04-08 19:36:28

标签: apache tomcat servlets nullpointerexception catalina

所以我的情况有点奇怪,因为我正在寻找一个没有访问源代码的服务器。关于servlet的所有内容到目前为止都运行良好,但是有一个突然的,自发的错误出现在一个具有空指针异常的Java servlet上。

以下是错误日志:

INFO: Added header: Cache-Control: no transform
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Added header: Cache-Control: no cache
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Attempted context: null
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Request URI: /public_stage//def.jsp
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Real path:  /opt/apps/tomjet/webapps/public_stage/def.jsp
8-Apr-2014 10:57:16 AM org.apache.catalina.core.ApplicationContext log
INFO: servlet context: null
8-Apr-2014 1:35:02 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet PushServletMAG threw exception
java.lang.NullPointerException
        at com.openwave.wappush.Pusher.netSendRequest(Pusher.java:312)
        at com.openwave.wappush.Pusher.send(Pusher.java:230)
        at ca.test.servlet.ExtendedPush.pushServiceIndication(ExtendedPush.java:105)
        at ca.test.servlet.CDMAPushServlet.doPost(CDMAPushServlet.java:180)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)

然而,转到catalina文件,我注意到它指出在几个位置,它正在尝试验证.jar文件,并且没有在WEB-INF / lib目录中加载servlet.jar文件。

以下是具有特定位置的行的示例:

8-Apr-2014 2:02:00 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/opt/apps/tomjet/webapps/wapMIG/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

总的来说,我对此问题感到非常困惑,因为在用户与源代码的交互方面,由于没有人可以访问它,因此绝对没有。它是如此突然和自发。

任何有助于解决此问题的想法/来源?非常感谢。

1 个答案:

答案 0 :(得分:0)

错误是你的WEB-INF /文件夹中的jar servlet-api.jar,容器提供了servlet-api.jar,它导致部署中的问题,你需要从你的lib文件夹中删除这个jar。 您可能需要此jar来编译项目,因此您必须将项目配置为在IDE中使用此jar,在eclipse中您可以将其作为外部jar添加到Java Build Path中,但我建议您启用Web Dynamic Project将tomcat配置为运行时环境。 (项目 - >属性 - >项目构面)