【发布时间】:2020-12-11 06:54:50
【问题描述】:
我有一个带有子模块的 Maven 项目,使用 Java 11 在 IntelliJ 中开发。
除非 pom.xml 文件包含<packaging>pom</packaging>,否则会有警告提示
'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging.
但是当打包设置为“pom”时,无法加载我需要的资源文件;返回一个空值,并引发异常。来自 main() 方法:
URL resource = getClass().getResource("/fx/gui.fxml");
Objects.requireNonNull(resource);
另一方面,有时找不到子模块,除非我要求 pom 打包。然后我要做的是:请求 pom 打包,启动程序并观察它失败,从 pom.xml 中删除 pom 打包语句,重新启动,程序运行。
我的资源文件位于标准位置src/main/resources/fx/gui.fxml。这个位置也在 pom 文件中给出:
<build>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
</build>
请帮助我了解发生了什么。是否需要 pom 打包,如何加载资源?
【问题讨论】: