Java 9模块系统资源文件位置

时间:2018-02-07 21:44:34

标签: java resources java-9

我没有写下有问题的一切,而是想放置一张图片。问题是我应该在哪里放置包含.properties文件的资源目录?

有关详细信息和确切问题,请参阅图像。 Java 9 Resource Directory

3 个答案:

答案 0 :(得分:6)

首先,如果您使用的是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")

  3. 其他可以尝试的事项

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

    Intellij marking folder as resources

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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