错误描述

报错信息如下图所示,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打开数据表可以发现,注册信息已经成功插入表中!

参考资料

  1. http://www.mamicode.com/info-detail-2660250.html
  2. http://www.xuehuile.com/blog/57bd78ef636644dc87963f6189e148dd.html
  3. https://www.cnblogs.com/zhangyinhua/p/7662334.html#_lab2_2_2

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

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

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

    错误描述 报错信息如下图所示,Web应用后台在读取配置文件的时候,系统找不到指定的路径. 这是Java Web项目的目录结构: 这是报错部分的代码: static { try { Properties ...

  2. 怎样解决Java Web项目更改项目名后报错以及不能找到web路径问题

    怎样解决Java Web项目更改项目名后报错以及不能找到web路径问题 一个java项目怎么改项目名字,用F2改了后,但是web项目用网页运行时还要输入原来的项目名字才能运行项目,不然报404错误,我 ...

  3. webservice 暴漏接口_解决java web 项目发布webservice接口

    最近公司有一个需求,需要暴露当前web项目的接口给第三方系统调用,网上查到webservice是跨平台.跨语言的应用技术,所以作为首选. 查找了很多例子,都是很简单的加@WebService到类,加@ ...

  4. java访问错误404_如何解决 Java web 项目中的 404 错误

    在使用 Tomcat 进行 Java Web 开发的时候,经常会遇到以下 HTTP 404 错误: 错误代码为 HTTP 404(未找到),描述信息是: "The origin server ...

  5. 解决java web项目导入后出现的问题 ---cannot be read or is not a valid ZIP file

    http://www.cnblogs.com/haimingwey/archive/2012/07/17/2595473.html 今天导入以前的2个web项目后会出现以下2个错误: 1. Archi ...

  6. java 读取项目内图片,java web项目中读取本地图片

    在项目中,因为业务需要,用户上传的图片存放在服务器的D盘中,为了读取并显示到页面上,尝试了两种方法: 一  通过流读取 java代码: @RequestMapping(value = "/s ...

  7. 实战:在Java Web项目中使用HBase

    在此之前我们使用MySQL作为数据源,但发现这数据增长速度太快,并且由于种种原因,因此必须使用HBase,所以我们要把Mysql表里面的数据迁移到HBase中,在这里我就不讲解.不争论为什么要使用HB ...

  8. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  9. java web 项目在tomcat上显示空白页的解决

    今天调试一java web项目,所有页面都显示空白,有如下的解决过程: 一 切换浏览器模式 tomcat打开页面是空白 用localhost:8080打开页面显示空白,以前用着没问题. 浏览器兼容性问 ...

最新文章

  1. 利用GNU的parted进行分区
  2. 前端学习(2749):uniapp项目目录结构介绍
  3. android os自动安裝软件,[图]Bliss OS 12进入开发阶段:可在桌面设备上安装Android 10系统...
  4. 安卓DialogFragment如何使用?
  5. python的异常处理及异常类定义
  6. token怎么获取 php,如何用php获取某个页面中的input的csrf_token?
  7. OC语言-04-OC语言-核心语法
  8. 兰州中川机场停车费一天多少钱,中川机场附近停车便宜
  9. 手机定位折腾记(1):安卓手机的网络定位与NetworkLocation.apk
  10. python标准库abc的实用技巧
  11. c语言读取三菱plc数据,c#通过网线读取三菱PLC数据
  12. PS三种切图方式,干货满满,不看绝对后悔
  13. 基于matlab的脑瘤mr图像处理_基于电势能改进的区域生长脑肿瘤图像分割
  14. package.json bin的作用
  15. 高速数据采集卡“王牌”对“王牌”
  16. JAVA调用Excel公式和js判断选择计算有效集合
  17. Android 关于Excel表格的读与写(包括图片、字体颜色,语言)
  18. Hey UI源码市场
  19. qtdesigner设计表格_PyQt:使用QtDesigner设计界面
  20. 合宙ESP32C3上手使用

热门文章

  1. mk_trustonic.mk编译脚本
  2. Android编译32或64位程序
  3. 【dfs】P1036 选数
  4. 端口复用和半关闭补充
  5. 蜜罐中利用jsonp跨域漏洞和xss漏洞的分析
  6. 【web安全】Web应用隔离防护之Web弱口令爆破
  7. 一个含有crc32算法的CrackMe分析
  8. 【运维】详解 /etc/fstab
  9. 12、Java Swing计算器界面的实现
  10. Webstorm/PhpStorm打开多个项目文件夹