properties.load()出现空指针异常
在编写DBCP时使用配置文件加载后,赋值给数据源,出现空指针异常。
package com.demo.dbcp;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import com.demo.dao.Main;
public class Dbcp2 {
public static DataSource ds=null;
static{
Properties pro=new Properties();
try {
//通过类加载找到文件路径
InputStream in=new Dbcp2().getClass()
.getClassLoader().getResourceAsStream("com/demo/dbcp/dbcpConfig.properties");
//以数据流的形式加载到创建好的配置文件中
pro.load(in);
//初始化参数
ds=BasicDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) throws SQLException{
Connection conn=ds.getConnection();
DatabaseMetaData metaData=conn.getMetaData();
//打印数据库连接信息
System.out.println(metaData.getURL()
+"Username="+metaData.getUserName()
+","+metaData.getDriverName());
}
}
这是正确的代码,错误原因为
InputStream in=new Dbcp2().getClass()
.getClassLoader().
getResourceAsStream("com/demo/dbcp/dbcpConfig.properties");
路径写错了,
类加载文件路径是从src开始的,
所以如果你写在包里要写出她的绝对路径。
为什么插入代码块就退不出了,呜呜呜~