apache - Java Servlet - 空指针异常和 .jar 未加载

标签 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

总的来说,我对这个问题感到很困惑,因为就用户与源代码的交互而言,绝对没有,因为没有人可以访问它。它是如此突然和自发。

有什么想法/资源可以帮助我解决这个问题吗?非常感谢。

最佳答案

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

关于apache - Java Servlet - 空指针异常和 .jar 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946590/

相关文章:

php - 仅使用 apache、php 和 mysql 实现实时推送消息的最佳方法是什么?

apache - window机器上的Tomcat集群

mysql - 当我在 jsp 中单击提交按钮时出现错误

java - Tomcat 的 Documentum 6.5 SP3 错误

java - 在jsp中注销时禁用后退按钮

apache - 如果设置了 AddDefaultCharset,是否需要元字符集?

java - 让应用程序的多个实例在 Apache Tomcat 中运行的最佳方法是什么?

java - 带有 maven 和 tomcat 的 AXIS2 web 服务,部署为 aar

java - 如何将参数从漂亮的 URL 传递到 JSP 页面?

java - 如何从 jsp 中的超链接调用 doPost() servlet