Java9模块系统资源文件位置

Java 9 Module system Resources files location

我不想写所有有问题的东西,而是想放一张图片。问题是我应该把包含 .properties 文件的资源目录放在哪里?

查看图片了解更多信息和确切问题。

首先,如果您使用的是 Intellij IDEA 和 Gradle,请尝试将其添加到您的 build.gradle:

apply plugin: 'idea'
idea {
    module {
        inheritOutputDirs = true
    }
}

更可能的解决方案

根据我的经验Java 9 已经根据一些关于资源是否被封装的规则来锁定访问资源(see javadocs)。

对我有用的东西:

  1. 将资源放入我的资源文件夹的根目录并调用

    getClass().getClassLoader().getResource("myresource.txt")

  2. 使指向您的资源的文件夹结构与项目中合适的包相匹配。例如,如果您有 com.your.package,那么您的文件夹结构将为 resources/com/your/package/myresource.txt。一旦你有了这个,你可以在 module-info.java 中添加 opens com.your.package 并通过调用

    来获取你的资源

    YourClass.class.getResource("/com/your/package/myresource.txt")

其他尝试

将您的资源文件夹标记为 Intellij IDEA 中的资源。

我在从模块化 jar 读取 属性 文件时遇到了类似的问题。我将 属性 文件放在 jar 之外,并将 属性 文件的位置指定为 class-path。它运作良好。 我的Java版本如下: Java HotSpot(TM) 64 位服务器 VM(构建 9+181,混合模式)

这是 intellij 中的一个已知错误。由于某些未知原因,它永远悬而未决

https://youtrack.jetbrains.com/issue/IDEA-197469