代码之家  ›  专栏  ›  技术社区  ›  Asif Mushtaq

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

  •  3
  • Asif Mushtaq  · 技术社区  · 8 年前

    与其写下所有有疑问的东西,我想放一张图片。问题是我应该将包含 .properties 文件夹?

    有关更多信息和确切问题,请参见图。 Java 9 Resource Directory

    3 回复  |  直到 8 年前
        1
  •  6
  •   Lukehb    8 年前

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

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

    更可能的解决方案

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

    对我有用的东西:

    1. 将资源放在“我的资源”文件夹的根目录中并调用

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

    2. 使指向资源的文件夹结构与项目中合适的包相匹配。例如,如果您有一个com。你的包然后您的文件夹结构将是resources/com/your/package/myresource。txt。一旦你有了这个,你可以添加 opens com.your.package 模块信息中。java并通过调用

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

    其他尝试事项

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

    Intellij marking folder as resources

        2
  •  0
  •   zsk2021    8 年前

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

        3
  •  0
  •   Ashok Koyi    5 年前

    这是intellij中的一个已知错误。不知什么原因,它一直在等待

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