答案 0 :(得分:6)
首先,如果您使用的是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中的资源。
答案 1 :(得分:0)
从模块化jar中读取属性文件时遇到了类似的问题。我将属性文件放在jar外部,并将属性文件的位置指定为class-path。它工作正常。 我的Java版本如下: Java HotSpot(TM)64位服务器VM(内置9 + 181,混合模式)
答案 2 :(得分:0)
这是intellij中的一个已知错误。由于某些未知原因,它永远待定