IdapMainAgent.insertNumber 里面出现空指针异常,仔细debug一下

解决方案 »

  1.   

    IdapMainAgent.java 的 331 行错误
      

  2.   

    空值异常,对为null的值进行了操作
      

  3.   

    我这个下面的BUG是出现在MYECLIPSE下 CONSOLE视图中出现的错误,这个以下错误是不是由于我最上面问的问题的错误而产生的啊?(跪求 ,小弟不懂啊)org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.ncr.teradata.TeraDriver' for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at com.zjhcsoft.idap.database.DBConnectTERA.getConnection(DBConnectTERA.java:29)
    at com.zjhcsoft.idap.database.agent.IdapMainAgent.insertNumber(IdapMainAgent.java:330)
    at com.zjhcsoft.idap.struts.IdapUserUpload.IdapUserImportAction.execute(IdapUserImportAction.java:129)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at com.zjhcsoft.idap.struts.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:104)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: java.lang.NullPointerException
    at java.lang.String.regionMatches(String.java:1196)
    at com.microsoft.jdbc.base.BaseURLParser.parse(Unknown Source)
    at com.microsoft.jdbc.base.BaseDriver.acceptsURL(Unknown Source)
    at java.sql.DriverManager.getDriver(DriverManager.java:232)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
    ... 27 more
    这个BUG大概意思是说我的TELEDATA 驱动程序没有加载好,但我把驱动包已经加上去了,,以前没有出现过这种情况,这个BUG是最近,我在测试过程中出现的,,
      

  4.   

    你的connect url设为空了。怎么让它连数据库啊
      

  5.   

    package com.zjhcsoft.idap.database;import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;public class DBConnectSQL {
    // 得到连接私有方法
        private final synchronized DataSource getDBSource(){
         DataSource ds = null;
         try {
             Context initCtx=new InitialContext();
               ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/IDAPSQL");
                } catch (NamingException e) {
                e.printStackTrace();
            }
            return ds;
        }
        protected  Connection getConnection(){
            Connection conn=null;
           try {
               conn = getDBSource().getConnection();
           } catch (SQLException e) {
               e.printStackTrace();
           }
           return conn;
       }
       
      //关闭conn,stat,rs
       public final void Close_conn_st_rs(Connection conn,Statement st,ResultSet rs){
           CloseRs(rs);
           CloseSt(st);
           CloseConnect(conn);
       }
       //关闭stat,rs
       public final void Close_st_rs(Statement st,ResultSet rs){
           CloseRs(rs);
           CloseSt(st);
       }
       //关闭stat,rs
       public final void Close_conn_st(Connection conn,Statement st){
           CloseSt(st);
           CloseConnect(conn);
       }
       //关闭conn
       public final void close_conn(Connection conn){
           CloseConnect(conn);
       }
       //关闭连接
       private final void CloseConnect(Connection conn){
           if(null==conn){
               return;
           }
           try {
                conn.close();
           } catch (SQLException ex) {
               try{
                   conn.rollback();
               }catch(SQLException e){
                   e.printStackTrace();
               }
               ex.printStackTrace();
           }
       }
       //关闭PreparedStatement
       private final void ClosePst(PreparedStatement pst){
           if(null==pst){
               return;
           }
           try {
               pst.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
       //关闭ResultSet
       private final void CloseRs(ResultSet Rs){
           if(null==Rs){
               return;
           }
           try{
               Rs.close();
           }catch(SQLException e){
               e.printStackTrace();
           }
       }
       //关闭Statement
       private final void CloseSt(Statement St){
           if(null==St){
               return;
           }
           try{
               St.close();
           }catch(SQLException e){
               e.printStackTrace();
           }
       }
        
    }
      

  6.   

    你看看 com.zjhcsoft.idap.database.DBConnectTERA.getConnection(DBConnectTERA.java:29) 怎么写的。
      

  7.   

    架构师交流群:59048426,已经上传google 、 eBay、Youtube等顶级软件产品的架构分析!资料陆续上传中。 
    达到人数后开始培训!欢迎加入探讨,提问题! 
    ============================================= 
    《企业应用架构模式》pdf 系列书籍已经上传至群共享,欢迎下载!
    能够经常提问及回答问题的朋友,可以得到群主的精美小礼品,赶紧加入吧!
      

  8.   

    谢谢大家对这个问题的讨论啊,但是我觉的这个问题不是出于程序的问题,而是我的MYELIPSE上配置的问题,我这个项目程序在别人的机子上部署了一遍,但是没有出现问题,可能我在配置MYECLIPSE 6.0时,有些地方设置不当吧 ,,跪求相关资料 
      

  9.   

    可能是连接池的问题,是不是你的tomcat和jdk和别人机器上的不一样,或者是myeclipse不支持你的tomcate和jdk版本
      

  10.   

    首先找准你的IdapMainAgent 类的331 行! 看那一行具体的操作和接收的参数等!
    这种错误,只要你细心一点,就能够独立解决了!
      

  11.   

    Connection为null了当然会报exception了。看看你的Connection是怎么得来的。
      

  12.   

    我也遇到类似的问题,请高手指教指教,非常感谢!!!
    http://topic.csdn.net/u/20080515/14/5f348cb8-9aef-407d-a744-682e039590cf.html