关于idea问题设置bundle路径问题的一点想法

先上部分代码。

ResourceBundle rBundle = ResourceBundle.getBundle("settings/db");
url = rBundle.getString("urlPre") + rBundle.getString("host") + ":" + rBundle.getString("port") + "/" + rBundle.getString("database") + rBundle.getString("postfix");
driver=rBundle.getString("driverName");
username=rBundle.getString("username");
password=rBundle.getString("password");
// (已解决,需要放到resource root目录文件下)
// (查看形式:文件->项目结构->facets最下面有Resource Root)

这是已经修改好了的格式,当使用ResourceBundle.getBundle("db");语句通过写bundle配置文件形式来配置数据库连接时,明明已经将db.properties文件放在了src目录下,依然找不到该配置文件。
困扰了我大概一天时间,之后由于改各种路径的方式都试遍了,仍然找不到解决方案,所以采用另外的方式来获取配置文件。
方法一:通过FileInputStream()方法,
     或使用文件FileInputStream()方法
Properties prop = new Properties();
InputStream inputStream = new FileInputStream("src/db.properties");//这个路径对应的db.properties放在src目录下
prop.load(inputStream);
url = prop.getProperty("urlPre") + prop.getProperty("host") + ":" + prop.getProperty("port") + "/" + prop.getProperty("database") + prop.getProperty("postfix");
driver = prop.getProperty("driverName");
username = prop.getProperty("username");
password = prop.getProperty("password");

方法二:与法一类似,只是形式不太一样
InputStream inputStream = [Java文件类名].class.getClassLoader().getResourceAsStream("XXX.properties");

配置文件位置同样放置在src目录下

通过这两种方法都能获取到配置文件对象,之后就开始继续写代码了。

然后由于某种强迫症的思想的驱使,我又开始搞这个ResourceBundle(),为什么就是找不到呢?

我右击文本编辑器的页面

发现了这样的几个路径

 pom.xml就是Maven依赖的那个文件;

source root和resource root引起了我的强烈怀疑

由于我的Java Web项目是后来应用的maven依赖,所以其实我的src目录下是main目录和test目录

 而main目录下又分java目录和resource目录

 对于我的项目结构,source root会回到java目录,而resource root目录会回到resources目录。

我又把我的db.properties文件分别放到java和resources目录下进行测试,

当放到resources目录下时,奇迹发生了,db可以被识别到了。

我也不想再深究到底是为什么了。

我的解决方法是,若要让ResourceBundle.getBundle(“配置文件名(无后缀)”);被"find“,需要把配置文件放到resources目录下,即相对路径从resources目录开始。

原文地址:https://www.cnblogs.com/aiyyue/p/14934880.html