1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java错误无法读取配置文件_解决Java Web项目无法读取配置文件问题

java错误无法读取配置文件_解决Java Web项目无法读取配置文件问题

时间:2023-05-22 21:38:04

相关推荐

java错误无法读取配置文件_解决Java Web项目无法读取配置文件问题

错误描述

报错信息如下图所示,Web应用后台在读取配置文件的时候,系统找不到指定的路径。

这是Java Web项目的目录结构:

这是报错部分的代码:

static {

try {

Properties prop = new Properties();

//读取配置文件

InputStream is = new InputStream("src/main/resources/db.properties");

//加载配置文件

prop.load(is);

driver = prop.getProperty("driver");

url = prop.getProperty("url");

user = prop.getProperty("user");

password = prop.getProperty("password");

} catch (Exception e) {

e.printStackTrace();

}

}

做出的尝试:

一般遇到这样的问题的时候,第一反应觉得是路径不小心打错了。于是找到db.properties文件鼠标右击,选择Copy Qualified Name,复制配置文件的路径确保路径的正确性,但是并没有解决这个问题。

既然路径没错还会报错,就让我感到很奇怪。于是,我在该类下写了一个main函数直接跑Java Application去连接数据库,万万没想到居然成功连接上了(即成功读取到了配置文件)。

报错原因:

由上诉第二点应该可以看出来了,其实还是路径的问题,当时做出了一个大胆的猜想:Java项目本地直接运行(Java Application)的根目录和Java Web项目在服务器上运行(Run on Service)的根目录是不同的!

在网上找了相关资料后,证实了我的猜想:

当点击运行Java Application时,项目的根目录是从target/classes开始的

当点击运行Run on Service时,项目的根目录是从WEB_INF/classes开始的

PS:至于为什么是这样,可以去了解一下.classpath文件,它用于记录项目编译环境的所有信息,包括:源文件路径、编译后class文件存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。

问题解决

知道了出错原因是在路径问题上,那我们就把手动输路径改为通过Class获取资源路径。

获取路径的方法如下,如果给getResource()传入的是"",返回的是JDBCUtils类的路径;如果

传入的是"/",返回的是target/classes或WEB_INF/classes。

String url = JDBCUtils.class.getResource("/").getPath();

由上面的截图可以看到,配置文件db.properties是放在/class下的,所以要找路径的时候传入"/db.properties"参数即可。

InputStream is = new FileInputStream(JDBCUtils.class.getResource("/db.properties").getPath());

//等价于

InputStream is = JDBCUtils.class.getResourceAsStream("/db.properties");

进行上述更改后,报错信息消失了。我们来进行如下测试:

用Navicat打开数据表可以发现,注册信息已经成功插入表中!

参考资料

一个合格的程序员,应该要善于发现问题。٩(๑>₃

点赞

1

收藏

分享

文章举报

VeggieOrz

发布了89 篇原创文章 · 获赞 652 · 访问量 70万+

私信

关注

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。