2018年11月05号 这是本人的第一篇博客 记录关于自己学习过程中的一些问题 希望给自己提个醒也希望能够帮助正在学习开发的同志们一些帮助 初学不深 大神勿笑!!!
我在平时的学习中遇到一个问题,Java代码在测试单元import org.junit.Test;下运行报如下错误:
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:353)
at java.util.Properties.load(Properties.java:341)
at com.it.util.JDBCUtil.<clinit>(JDBCUtil.java:24)...............(后面还有很多不复制了)
package com.it.dao;
/**
* 定义操作数据库的方法 逻辑上的
* @author Andy
*
*/
public interface UserDao {
/**
* 查询所有
*/
void findAll();
/**
* 登录方法
* @param username
* @param password
*/
void login(String username, String password);
}
package com.it.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.it.dao.UserDao;
import com.it.util.JDBCUtil;
public class UserDaoImpl implements UserDao {
@Override
public void findAll(){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1.获取连接对象
conn = JDBCUtil.getConn();
//2.创建statement对象
st = conn.createStatement();
//3.
String sql = "select * from t_user";
rs = st.executeQuery(sql);
while(rs.next()){
String userName = rs.getString("username");
String passWord = rs.getString("password");
System.out.println(userName+"====>"+passWord);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.release(conn, st, rs);
}
}
@Override
public void login(String username, String password){
//查询数据库 匹配给定的用户名和密码
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1.获取连接对象
conn = JDBCUtil.getConn();
//2.创建statement对象
st = conn.createStatement();
//3.
String sql = "select * from t_user where username = '"+username+"' AND password='"+password+"'";
rs = st.executeQuery(sql);
if(rs.next()){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtil.release(conn, st, rs);
}
}
}
package com.it.test;
import org.junit.Test;
import com.it.dao.UserDao;
import com.it.dao.impl.UserDaoImpl;
public class TestUserDaoImpl {
@Test
public void testFindAll(){
UserDao dao = new UserDaoImpl();
dao.findAll();
}
@Test
public void testLogin(){
UserDao dao = new UserDaoImpl();
dao.login("admin", "10086");
}
}
代码仔细检查了几遍都没有发现什么问题,编译器也没有明显提示错误,之前查询了很多网上的资料一直找不到原因后来仔细查看报错的语句才发现java.lang.NullPointerException空指针异常和
java.util.Properties$LineReader.readLine(Properties.java:434)配置文件错误,才想到配置文件应该放在src目录下才能读取,因为我写的格式是使用类加载器去读取属性文件的,所以在读取的时候要按照src路径下去读取配置文件,路径错误就会提示空指针异常和配置文件错误的提示.希望有所帮助
-->
//1.创建一个属性配置对象
Properties properties = new Properties();
// InputStream is = new FileInputStream("jdbc.properties"); //用这种方式的时候需要把src下面的jdbc.properties文件放在文件夹的根目录下才能运行
//使用类加载器,去读取src下面的资源文件
InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");