public static RowSet execQuery(String queryStr) {
CachedRowSetImpl rowset = null;
Connection conn = null;
try {
rowset = new CachedRowSetImpl();
conn = createConnection();
ResultSet rsSet = conn.createStatement().executeQuery(queryStr);
rowset.populate(rsSet);
rsSet.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(!conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return rowset;
}
在main函数中调用该方法没有问题,但在SWTBot调用时进行到if(!conn.isClosed)出错:java.lang.NullPointException
如何解决?

解决方案 »

  1.   

    在该行报错:rowset = new CachedRowSetImpl();
    附错误:java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:435)
    at java.util.Properties.load0(Properties.java:354)
    at java.util.Properties.load(Properties.java:342)
    at java.util.PropertyResourceBundle.<init>(PropertyResourceBundle.java:129)
    at com.sun.rowset.JdbcRowSetResourceBundle.<init>(Unknown Source)
    at com.sun.rowset.JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle(Unknown Source)
    at com.sun.rowset.CachedRowSetImpl.<init>(Unknown Source)
    at com.wincom.lsc.DBUtil.execQuery(DBUtil.java:66)
    at com.wincom.lsc.console.view.dialog.buildingDialogTest.AddRecordTest.setUp(AddRecordTest.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
      

  2.   

    不清楚为何连实例化都不行,为何Properties文件认不到?
      

  3.   

    CachedRowSetImpl();
    这个方法我没用过,所以我没法说。
    我感觉好像是你读取配置文件出现了问题,参数传的不对,所以出现该类不能正常实例化的情况。
    另外一般都是声明接口,实例化对象,你这声明的直接是接口实现类了。
      

  4.   

    哥们打一断点到源码里面,看看是哪个参数是null的,看看怎么调用的,就知道原因了,建议有问题先跟源码!
      

  5.   

    哥们打一断点到源码里面,看看是哪个参数是null的,看看怎么调用的,就知道原因了,建议有问题有源码的话先跟源码!