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

2022-08-31 14:27:11

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

谁能告诉我问题出在哪里?我的 Java 代码尝试加载此文件是:

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

其中 是一个对象。propsProperties

任何人都可以给我一些关于如何解决这个问题的提示吗?


答案 1

如果文件在编译后放置在 target/classes 下,则它已经位于作为生成路径一部分的目录中。目录 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 ...

答案 2

我认为您需要将其放在下面并按如下方式加载它:src/main/resources

props.load(new FileInputStream("src/main/resources/myconf.properties"));

您尝试加载它的方式将首先签入项目的基文件夹。如果它位于 中,并且您希望从那里加载它,请执行以下操作:target/classes

props.load(new FileInputStream("target/classes/myconf.properties"));

推荐