小编典典

无法从资源目录加载属性文件

java

我从Git存储库导入了一个项目,并在Eclipse中为其添加了Maven性质。在资源文件夹中,我添加了一个名为的配置文件myconf.properties。现在,每当我尝试从Java代码打开此文件时,都会得到FileNotFoundException。该文件也存在于target/classesmaven编译项目后生成的文件夹中。

谁能告诉我可能是什么问题?我尝试加载此文件的Java代码是:

props.load(new FileInputStream("myconf.properties"));

其中props是一个Properties对象。

谁能给我一些有关如何解决此问题的提示?


阅读 151

收藏
2020-09-16

共1个答案

小编典典

如果文件在编译后被放置在目标/类下,则它已经在构建路径中的目录中。目录src / main /
resources是此类资源的Maven默认目录,并且Eclipse Maven插件(M2E)自动将其放置到构建路径中。因此,无需移动属性文件。

另一个主题是如何检索此类资源。构建路径中的资源自动位于正在运行的Java程序的类路径中。考虑到这一点,您应该始终使用类加载器加载此类资源。示例代码:

String resourceName = "myconf.properties"; // could also be a constant
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Properties props = new Properties();
try(InputStream resourceStream = loader.getResourceAsStream(resourceName)) {
    props.load(resourceStream);
}
// use props here ...
2020-09-16