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

相同目录中的Java模块和资源,java,embedded-resource,java-9,java-module,java-11,Java,Embedded Resource,Java 9,Java Module,Java 11,我试图习惯使用modules-info.Java编写模块化Java应用程序。我现在很难理解资源处理是如何工作的。 从以前的项目中,我习惯于在资源中有一个“i18n/”目录,在那里我保存所有翻译属性文件 Project A +- src/main/resources +- i18n +- projA_de.properties +- projA_en.properties Project B +- src/main/resources +- i

我试图习惯使用modules-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
虽然它在Java8中工作,并且仍然使用Java11编译,但我得到了错误

Package i18n in both module project.a and module project.b
我知道,Java11更希望资源与类文件位于相同的目录中。我想,如果我将资源目录重命名为与包匹配的目录或任何其他独特的方式,这将起作用——但我不喜欢它产生的混乱

是否有一种变通方法可以让我保持我的资源不变,并且仍然从模块化中获益

我知道,Java11更希望资源能够被使用 与类文件相同的目录

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

但是,模块化还要求在模块路径上解析时,没有两个模块会带来相同的包。因此,正如您已经知道的,最干净的解决方法是重命名其中一个模块的包结构


或者,另一种解决方法(不太好)是让这些模块保留在类路径上,并将结果分类为。

您所说的是哪种“它产生的混乱”?请看您在问题中显示的目录结构。这些资源在整个目录结构中是不相关和“杂乱”的。在这里,使用冲突目录名没有任何优势。当打包到库(例如jar文件)中时,这些名称无论如何都不会形成结构,因为jar文件只是文件的线性序列,其名称可能包含斜杠。ResourceBundle javadoc的“资源束和命名模块”部分提供了在命名模块中部署资源的选项。