Java项目读取配置文件时,找不到指定的文件???

唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException 系统找不到指定的文件,气死人啦。
还有就是:System.getProperty("user.dir"),都说获得的是“工作目录”,有老铁们在意这个,工作目录怎么理解吗?我这做了个简单的测试。
但是,你把这个配置文件放在项目的根目录下面,也就是 说你的项目文件夹下面直接放一个配置文件,这个时候,就可以,啥前缀不加的,就可以读取到,这个配置文件啦。
但是,这么放置配置文件,好像有点不合适。
那么,这个路径究竟该如何写,才不会报错呢?
1,在 java project 中的配置文件读取,项目打包是jar类型的。
System.getProperty("user.dir");
解释:
默认定位到的当前用户目录("user.dir")(即工程根目录)
JVM就可以据"user.dir" + "你自己设置的目录" 得到完整的路径(即绝对路径)
这有个前提,你的工程不是web项目,不然,这个返回值就不是项目的根目录啦,是tomcat的bin目录。
2,在 java web project 中的配置文件读取
ServletActionContext.getServletContext().xxx
这地方的 ServletActionContext 可不是让你,直接拿来使用的,得分情况而定。

System.out.println("getProperty(\"user.dir\") " + System.getProperty("user.dir"));
System.out.println("getServletContext");
System.out.println("getRealPath " + request.getSession().getServletContext().getRealPath("/"));
System.out.println("getContextPath " + request.getSession().getServletContext().getContextPath());
System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourcePaths("/"));
System.out.println("getResourcePaths " + request.getSession().getServletContext().getResourceAsStream("/WEB-INF/classes/error.xml"));
return mav;
想知道这个运行的结果吗?

getRealPath:
直接干到了打成war包target下的项目名称我这叫springMVC。
getContextPath:
这个就是获得当前URL的地址,我访问的这个链接全称是:http://localhost:0000/lxk/student
看运行结果,就是你这个 web app 的名称啦,因为后面的student算是子功能吧。
getResourcePaths:

一般,老铁们搜索文章,都搜索到的是
System.getProperty("user.dir")
获得的是工作目录,这个搜索结果千篇一律。简直可怕。因为,这些老铁们从来没测试过。
什么叫工作目录。。。
可以看到,我这个在,Java web项目里面的允许结果,竟然是tomcat的bin 目录。这个懂的自然懂,不懂的,还是渣渣的迷糊。
在非Java web 的项目里面,这个 System.getProperty("user.dir") 的运行结果,如下。

欢迎工作一到五年的Java工程师朋友们加入Java技术交流:585550789请添加链接描述

原文地址:https://blog.51cto.com/14226273/2363963

时间: 2024-12-10 02:29:14

Java项目读取配置文件时,找不到指定的文件???的相关文章

System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常

前言: 最近公司增加服务器,在新增加的服务器中发现一些问题. 1.应用程序在读取证书文件中出现"系统找不到指定的文件."异常,但是已经确认证书文件存在.本地测试也可以读取,就在新增加的服务器上不可以. 2.RSA加密过程中在 System.Security.Cryptography.RSA.FromXmlString()抛异常: System.Security.Cryptography.CryptographicException: 系统找不到指定的文件. 解决方案: 打开IIS设置,

MVC项目,系统找不到指定的文件。(异常来自 HRESULT:0x80070002)

今天在用Visual Studio新建MVC项目的时候,遇到错误 系统找不到指定的文件.(异常来自 HRESULT:0x80070002) 解决办法:工具--> 扩展和更新 -->联机(Visual Studio库)--> NuGet Packget Manager for Visual Studio 2013 , 下载安装后 , 重启VS,OK (NuGet Packget, 还没有好好研究,总体说是方便开发,管理和更新第三方引用)

sublime text 编译时提示[WinError 2] 系统找不到指定的文件。

问题描述: [WinError 2] 系统找不到指定的文件. [cmd: ['g++', 'D:\\source-code\\sublime\\test.cpp', '-o', 'D:\\source-code\\sublime/test']] [dir: D:\source-code\sublime] [path: D:\program\basic\python3.4.0;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem] 如下图:

Navicat for MySQL 新建查询时,报can't create file ...系统找不到指定的文件夹出现问题

如图点击新建查询报错 解决办法 将这个路径修改一下就ok了 Navicat for MySQL 新建查询时,报can't create file ...系统找不到指定的文件夹出现问题 原文地址:https://www.cnblogs.com/perfei456/p/8576944.html

Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:\Jenkins\Jenkins_home\workspace\jmeter_test"): CreateProcess error=2, 系统找不到指定的文件。

想在本地执行我的python文件,我本地搭建了一个Jenkins,使用了execute shell来运行我的脚本,发现报错 [jmeter_test] $ sh -xe D:\tomcat\apache-tomcat-8.5.20\temp\jenkins4583980269774421650.sh The system cannot find the file specified FATAL: command execution failed java.io.IOException: Crea

未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件

连续两天都为这个运行时错误“类型初始值设定项引发异常”而烦恼,调试也不知道哪里出了问题.上网Google一下,一大堆相同的问题,可是按照那些方法折腾来折腾去,问题还是一样.最后在CSDN上发帖子问了,果然“重赏之下必有勇夫”,很快就有高手回复了,问题也随着解决了.哈哈.在此写个随笔,以后如果大家遇到类似问题,也可参考一下,自己也做个备忘,不然放在电脑上,又找不到,我的电脑文件到处乱放,有时连我自己都找不到^_^. 问题是这样嘀: 项目采用了三层架构和工厂模式,并借鉴了PetShop的架构,因为这

Assembly.Load未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件

项目采用了三层架构和工厂模式,并借鉴了PetShop的架构,因为这个项目也是采用分布式的数据库,目前只有三个数据库,主要出于提高访问性能考虑. 原来是按照网上对PetShop的介绍来给各项目添加引用的. 1.Web 引用 BLL.2.BLL 引用 IDAL,Model,使用DALFactory创建实例.3.IDAL 引用 Model. 在编程中,使用反射(IoC)是一个很好的架构.在.Net中,System.Reflection命名空间提供了对反射的支持.然而,很多朋友在使用Assembly.L

"未能载入文件或程序集“XXX”或它的某一个依赖项。系统找不到指定的文件"的解决方式

今天在写反射调用的时候失败了,经过调试和分析,终于攻克了,以下我就详细说明. 一,报错的现象 未能载入文件或程序集"DalSQL"或它的某一个依赖项.系统找不到指定的文件. 说明: 运行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的具体信息. 异常具体信息: System.IO.FileNotFoundException: 未能载入文件或程序集"DalSQL"或它的某一个依赖项. 系统找不到指定的文件. 错

能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件

能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件 http://blog.csdn.net/pplcheer/article/details/7796211 做项目总是遇到各种的问题,今天就出现了这个问题.我在项目中使用EXT控件,当我添加一个刷新按钮时,报出了一个“未能加载文件或程序集“Coolite.Ext.Web”或它的某一个依赖项”的问题,后来我就重新找到我的COOLITE安装文件,将相应的DLL文件重新加载了一遍,问题解决了. 下面是我结合我的问题,查的一些资料,供