V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Melissa
V2EX  ›  Java

求一个懂 java 的大神帮忙解决一个问题

  •  
  •   Melissa · 2017-01-06 13:36:28 +08:00 · 2725 次点击
    这是一个创建于 2880 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首页 index.jsp 页面报错

    Error:java.lang.NullPointerException

    后台登录完报错为

    HTTP Status 500 - An exception occurred processing JSP page /admin/sys/loginpost.jsp at line 28

    type Exception report

    message An exception occurred processing JSP page /admin/sys/loginpost.jsp at line 28

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/sys/loginpost.jsp at line 28

    25: String lang = Request.GetString("lang", "chinese"); 26: 27: UserLogin userLogin = new UserLogin(dbo, session, "AdminLogin", request); 28: if(userLogin.Login(name, password, 1)) 29: { 30: WebInit.Init_Lang = lang;//chinese english 31: response.sendRedirect("/admin/main.html");

    Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause

    java.lang.NullPointerException com.NJD.db.DBO.ExecuteQuery(wd:171) com.NJD.db.mysql.MySQL5_5.GetRecordsNum(bd:219) com.NJD.ums.basic.UserDb.Exist(cc:198) com.NJD.ums.UserLogin.Login(wb:193) org.apache.jsp.admin.sys.loginpost_jsp._jspService(loginpost_jsp.java:94) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    11 条回复    2017-01-08 23:43:55 +08:00
    zjw60320
        1
    zjw60320  
       2017-01-06 13:40:07 +08:00
    空指针,看一下 /admin/sys/loginpost.jsp at line 28 这里有什么问题
    holyghost
        2
    holyghost  
       2017-01-06 13:41:48 +08:00
    不是大神,不懂 java ,但是难道不应该去看看 28: if(userLogin.Login(name, password, 1)) 哪里可能会 NPE 吗?

    (一个猜想不一定对
    Melissa
        3
    Melissa  
    OP
       2017-01-06 13:44:59 +08:00
    @zjw60320 感觉这个地方没有什么问题啊~~

    <%
    DBO dbo = new DB().getDbo();
    dbo.setRequest(request);
    //DBO dbo = new MySQL5_5(WebInit.Init_DefaultDB);
    RequestHandle Request = new RequestHandle(request);
    String htmlStr = "";

    String name = Request.GetString("user", true);
    String password = Request.GetString("pwd", true);
    String code = Request.GetString("code");
    String lang = Request.GetString("lang", "chinese");

    UserLogin userLogin = new UserLogin(dbo, session, "AdminLogin", request);
    if(userLogin.Login(name, password, 1))
    {
    WebInit.Init_Lang = lang;//chinese english
    response.sendRedirect("/admin/main.html");
    }
    else
    {
    htmlStr = "<script>";
    htmlStr += "ReturnError('"+ userLogin.getErrorMsg() +"');";
    htmlStr += "</script>";
    out.print(htmlStr);
    }

    dbo.CloseAll();
    %>
    wanglv110
        4
    wanglv110  
       2017-01-06 15:07:39 +08:00   ❤️ 1
    在 28 行输出一下看看 userLogin 是不是为 null
    acoder2013
        5
    acoder2013  
       2017-01-07 18:39:27 +08:00
    喜闻乐见的 NPE 。。。
    Miy4mori
        6
    Miy4mori  
       2017-01-07 19:59:36 +08:00
    你就是单步一下也找到问题了啊,既然是 RuntimeException 就要运行时排查,手动〇〇
    Melissa
        7
    Melissa  
    OP
       2017-01-08 21:32:04 +08:00
    @Miy4mori 现在发现是一个时间判断问题,,在连接数据库之前会有一个时间判断,(应该是判断当前时间是否和数据库的当前时间一直,),然后我没有源码,,只有相关的 jar 文件,,求大神告知有没有好的办法解决? 比如修改服务器的时间可以么?
    Melissa
        8
    Melissa  
    OP
       2017-01-08 21:33:38 +08:00
    @acoder2013 我承认自己菜鸟满意了嘛~~
    Miy4mori
        9
    Miy4mori  
       2017-01-08 22:07:26 +08:00 via Android   ❤️ 1
    @Melissa 有 jar 可以用 jd-gui 反编译看看,一般没混淆的都可以反编译出来
    skywayman
        10
    skywayman  
       2017-01-08 22:24:38 +08:00   ❤️ 1
    建议方案: 1.用 winrar 打开 jar 包 ; 2.找到 class 拖出来反编译为 java ; 3.加上一堆 out 输出查看变量 4.重新把 java 再编译为 class 使用 winrar 放到 jar 中 run. good luck.
    dallaslu
        11
    dallaslu  
       2017-01-08 23:43:55 +08:00   ❤️ 1
    第一直觉应该看 com.NJD.db.DBO.ExecuteQuery(wd:171) 这里。如果已经定位到时间判断,可以改时间试试,因为可能只是验证了时间差。还是反编译吧,靠谱。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:02 · PVG 03:02 · LAX 11:02 · JFK 14:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.