java.io.FileNotFoundException: dbinfo.properties (系统找不到指定的文件。)
如图:
求大神指点啊!!!!
12 个解决方案
#1
就是画线那句报错,如果改成绝对路径,就运行正常了,有办法解决吗?
#2
把dbinfo.property放在src下面 一般不放在最外层 然后用下面的代码获取
fileInputStream = this.getClass().getClassLoader().getResourceAsStream("dbinfo.property");
#3
把property文件放到src下就好了
#4
依旧不行啊,还是报找不到文件。
#5
public class DBUtil {
private static DataSource ds;
/**
* 创建线程局部变量,提供拦截器的事务支持
*/
private static ThreadLocal<Connection> connHolder = new ThreadLocal<Connection>();
/**
* 加载配置文件,完成连接池的建立
*/
static{
Properties properties = new Properties();
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
try {
properties.load(in);
ds = BasicDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从连接池中获取连接
* @return MYSQL连接
* @throws Exception SQL异常
*/
public static Connection getConnection() throws Exception{
Connection conn = connHolder.get();
if(conn == null || conn.isClosed()){
conn = ds.getConnection();
connHolder.set(conn);
}
System.out.println("SQL连接:" + conn);
return conn;
}
/**
* 释放连接
* @param conn MYSQL连接
* @throws Exception SQL异常
*/
public static void closeConnection() throws Exception{
Connection conn = connHolder.get();
if(conn != null){
conn.close();
}
}
/**
* 设置conn连接的手动提交
* @throws Exception
*/
public static void beganTransaction() throws Exception{
DBUtil.getConnection().setAutoCommit(false);
}
/**
* 提交事务
* @throws Exception
*/
public static void commit() throws Exception{
DBUtil.getConnection().commit();
System.out.println("commit成功");
}
/**
* 回滚事务
* @throws Exception
*/
public static void rollback() throws Exception{
DBUtil.getConnection().rollback();
}
public static void main(String[] args){
try {
System.out.println(DBUtil.getConnection());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
可能是你的流读不出来 直接用把
#6
先放到src下 再用这句
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
private static Properties prop = null;
public String getProperty(String key) {
if (prop == null) {
prop = new Properties();
InputStream is = this.class.getClassLoader()
.getResourceAsStream("xxx.properties");
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return prop.getProperty(key);
}
#7
先放到src下 再用这句
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
private static Properties prop = null;
public String getProperty(String key) {
if (prop == null) {
prop = new Properties();
InputStream is = this.class.getClassLoader()
.getResourceAsStream("xxx.properties");
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return prop.getProperty(key);
}
我是放在静态代码块的,不能用this。
#8
我是放在静态代码块的,不能用this。
把this换成该类名
#9
文件放的位置不对,起码要把文件放到webroot下或者他的子目录,不然不会被部署到tomcat的webapp下面
#10
放那能找到才怪
#11
不在同个目录,找不到
#12
我是放在静态代码块的,不能用this。
把this换成该类名
问题解决了,原来是因为web应用的主目录根本和项目目录没关系,使用你说的类加载解决了这个问题。感谢!
#1
就是画线那句报错,如果改成绝对路径,就运行正常了,有办法解决吗?
#2
把dbinfo.property放在src下面 一般不放在最外层 然后用下面的代码获取
fileInputStream = this.getClass().getClassLoader().getResourceAsStream("dbinfo.property");
#3
把property文件放到src下就好了
#4
把property文件放到src下就好了
依旧不行啊,还是报找不到文件。
#5
把property文件放到src下就好了
依旧不行啊,还是报找不到文件。
public class DBUtil {
private static DataSource ds;
/**
* 创建线程局部变量,提供拦截器的事务支持
*/
private static ThreadLocal<Connection> connHolder = new ThreadLocal<Connection>();
/**
* 加载配置文件,完成连接池的建立
*/
static{
Properties properties = new Properties();
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
try {
properties.load(in);
ds = BasicDataSourceFactory.createDataSource(properties);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从连接池中获取连接
* @return MYSQL连接
* @throws Exception SQL异常
*/
public static Connection getConnection() throws Exception{
Connection conn = connHolder.get();
if(conn == null || conn.isClosed()){
conn = ds.getConnection();
connHolder.set(conn);
}
System.out.println("SQL连接:" + conn);
return conn;
}
/**
* 释放连接
* @param conn MYSQL连接
* @throws Exception SQL异常
*/
public static void closeConnection() throws Exception{
Connection conn = connHolder.get();
if(conn != null){
conn.close();
}
}
/**
* 设置conn连接的手动提交
* @throws Exception
*/
public static void beganTransaction() throws Exception{
DBUtil.getConnection().setAutoCommit(false);
}
/**
* 提交事务
* @throws Exception
*/
public static void commit() throws Exception{
DBUtil.getConnection().commit();
System.out.println("commit成功");
}
/**
* 回滚事务
* @throws Exception
*/
public static void rollback() throws Exception{
DBUtil.getConnection().rollback();
}
public static void main(String[] args){
try {
System.out.println(DBUtil.getConnection());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
可能是你的流读不出来 直接用把
#6
先放到src下 再用这句
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
private static Properties prop = null;
public String getProperty(String key) {
if (prop == null) {
prop = new Properties();
InputStream is = this.class.getClassLoader()
.getResourceAsStream("xxx.properties");
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return prop.getProperty(key);
}
#7
先放到src下 再用这句
InputStream in = this.class.getClassLoader().getResourceAsStream("dbcp.properties");
给你一个读取配置文件信息的方法
private static Properties prop = null;
public String getProperty(String key) {
if (prop == null) {
prop = new Properties();
InputStream is = this.class.getClassLoader()
.getResourceAsStream("xxx.properties");
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return prop.getProperty(key);
}
我是放在静态代码块的,不能用this。
#8
我是放在静态代码块的,不能用this。
把this换成该类名
#9
文件放的位置不对,起码要把文件放到webroot下或者他的子目录,不然不会被部署到tomcat的webapp下面
#10
放那能找到才怪
#11
不在同个目录,找不到
#12
我是放在静态代码块的,不能用this。
把this换成该类名
问题解决了,原来是因为web应用的主目录根本和项目目录没关系,使用你说的类加载解决了这个问题。感谢!