属性文件:jdbc.properties(在src目录中)
driverClass = oracle.jdbc.driver.OracleDriver url = jdbc:oracle:thin:@10.131.114.71:1521:eftest user = orcl password = orcl
问题一:使用如下语句获取不到属性文件jdbc.properties中的值,JUnit报空指针异常
InputStream in = JDBCUtil.class.getResourceAsStream("jdbc.properties"); Properties prop = new Properties(); prop.load(in); String driver = prop.getProperty("driverClass"); System.out.println(driver); String url = prop.getProperty("url"); String user = prop.getProperty("user"); String password = prop.getProperty("password"); System.out.println(password);
解决思路:
(1)可能需要将属性文件和获取属性文件的类放在同一个包内
测试结果:可以获取到属性值
(2)于是猜想:报空指针异常是不是没找到这个属性文件,换句话说getResourceAsStream(String name)这个方法需要传入的这个name的参数是属性文件所在的目录,而不只是属性名?
测试:将属性文件重新移到src目录下,在InputStream in = JDBCUtil.class.getResourceAsStream("/jdbc.properties");
中的属性文件名前加“/”,结果可以成功获取到属性值。
问题二:可以获取到驱动程序也将驱动加到了classpath中,但是测试获取数据库连接的时候,
报java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 异常
解决思路:
将从属性文件中获取到的driverClass属性值打印到控制台中后,无意间全选之后发现打印到控制台上的字符串有空格,于是发现jdbc.properties中确实有空格,删除空格后,成功获取到了数据库连接。