运行 gradle 在 Springs 框架外测试时找不到属性文件

Can't find properties file when running gradle test outside of Springs framework

我正在尝试从基于 Gradle 的项目中的 Java class 加载配置文件。我正在使用 java.util.Properties 加载与项目相关的文件(因此我不需要硬编码配置文件的路径)。

我看过一个几乎完全相同的问题, Can't find properties file when running gradle test,但是,我没有使用 Springs 框架,所以答案看起来很不一样。

我当前的代码如下所示:

String filename = "config.properties";

input =  Config.class.getResourceAsStream(filename);
if (input == null) {
    throw new FileNotFoundException("config " + filename + " not found");
} 

我已将我的配置文件放在项目的几乎每个文件夹中。我使用了默认的 gradle 资源文件夹 src/test/resources,但没有成功。

配置文件是否应该放在 .java 文件、.class 文件附近(可能不会发生,因为 .class 输出是 gradle 的动态输出)或在资源文件夹中?

感谢您的帮助!

使用代码 Config.class.getResourceAsStream("config.properties");,您正在寻找与 class 相同的包中的资源 config.properties。给 Class.getResourceAsStream(name) 的路径是相对于包层次结构中 class 的位置。

如果您将资源放在 src/test/resources 下,那么它将最终位于您最终 jar 的根目录下,因此您可以使用绝对路径在 /config.properties 中查找它。