Java 相同目录中的模块和资源

Java Modules and resources in identical directories

我正在尝试使用模块-info.java 编写模块化Java 应用程序。我现在无法理解资源处理的工作原理。 在以前的项目中,我在资源中使用了一个 "i18n/" 目录,我将所有翻译 属性 文件保存在该目录中。

Project A
 +- src/main/resources
    +- i18n
        +- projA_de.properties
        +- projA_en.properties

Project B
 +- src/main/resources
    +- i18n
        +- projB_de.properties
        +- projB_en.properties

虽然这在 Java 8 中有效并且仍然使用 Java 11 编译,但我收到错误

Package i18n in both module project.a and module project.b

我明白,Java 11 更希望资源与 class 文件位于同一目录中。我想如果我重命名与包匹配的资源目录或任何其他独特的方式,这会起作用 - 但我不喜欢它产生的混乱。

是否有一种解决方法可以让我保留我习惯使用的资源并仍然受益于模块化?

I understand, that Java 11 much more expects the resources to be in the same directories as the class files

是的,它确实希望资源位于与包中 类 相似的目录路径中,以便轻松访问它们。

但是,模块化还期望在模块路径上解析时没有两个模块引入相同的包。因此,正如您已经知道的那样,解决该问题的最简洁方法是重命名其中一个模块的包结构

否则,另一种解决方法(不太好)是让这些模块保留在类路径中,结果被归类为 the unnamed module.