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)。
对我有用的东西:
将资源放入我的资源文件夹的根目录并调用
getClass().getClassLoader().getResource("myresource.txt")
使指向您的资源的文件夹结构与项目中合适的包相匹配。例如,如果您有 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 中的一个已知错误。由于某些未知原因,它永远悬而未决
我不想写所有有问题的东西,而是想放一张图片。问题是我应该把包含 .properties
文件的资源目录放在哪里?
查看图片了解更多信息和确切问题。
首先,如果您使用的是 Intellij IDEA 和 Gradle,请尝试将其添加到您的 build.gradle
:
apply plugin: 'idea'
idea {
module {
inheritOutputDirs = true
}
}
更可能的解决方案
根据我的经验Java 9 已经根据一些关于资源是否被封装的规则来锁定访问资源(see javadocs)。
对我有用的东西:
将资源放入我的资源文件夹的根目录并调用
getClass().getClassLoader().getResource("myresource.txt")
使指向您的资源的文件夹结构与项目中合适的包相匹配。例如,如果您有 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 中的一个已知错误。由于某些未知原因,它永远悬而未决