Java Servlet中存在NullPointerException

Java Servlet中存在NullPointerException,java,servlets,Java,Servlets,*我已经创建了一个基本的servlet程序,若用户给出正确的USN号,它将从数据库中获取数据,否则它将重定向到error.html 每当我输入USN编号时,它都会显示NullPointerException。因为我使用的是Eclipse,所以没有任何错误迹象。 注意:我还创建了一个html文件来输入USN编号 代码: 输出: java.lang.NullPointerException com.abc.error.GetResult.service(GetResult.java:36) java

*我已经创建了一个基本的servlet程序,若用户给出正确的USN号,它将从数据库中获取数据,否则它将重定向到error.html 每当我输入USN编号时,它都会显示NullPointerException。因为我使用的是Eclipse,所以没有任何错误迹象。 注意:我还创建了一个html文件来输入USN编号

代码:

输出:

java.lang.NullPointerException
com.abc.error.GetResult.service(GetResult.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

stacktrace表示,如果张贴代码的行号与您的实际代码匹配,则NPE位于此行:

pstmt.setString(1,key);
您可以通过在该行上设置断点来验证这一点

我看不到您的实际代码,因此您应该使用更多断点检查以下几点:

  • con
    null吗?如果是这样,您的
    init()
    方法可能不会被调用,或者它会在您的日志中抛出一个您没有看到的异常

  • 将PreparedStatement声明向下移动到使用它的位置-在函数外部声明它对您没有任何帮助:

    PreparedStatement stmt=con.prepare(…)

  • 当然,还要验证
    是否为非空


  • 如果
    con
    将为
    null
    ,它将在第29行抛出NPE。如果
    key
    将为null,则调用堆栈将至少更深一层。错误表明
    pstmt
    null
    @spork我已经按照您上面提到的那样做了,但我仍然得到了相同的结果error@Ivar同意…如果OP在生成stacktrace时发布代码。我已经学会了不要假设。@Bankimh您已经设置了断点并确认
    con
    stmt
    key
    在运行时都是非空的?如果是这样的话,你就不能得到同样的错误。@Filburt不,这并不能解决我的问题…Filburt的链接应该会帮助你,不要错过
    pstmt.setString(1,key);