700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 解决Java Web项目无法读取配置文件问题

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

时间:2020-12-29 16:39:01

相关推荐

解决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/classesWEB_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打开数据表可以发现,注册信息已经成功插入表中!

参考资料

/info-detail-2660250.html/blog/57bd78ef636644dc87963f6189e148dd.html/zhangyinhua/p/7662334.html#_lab2_2_2

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

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