简单问题,使用 Netbeans 12x 时如何从基于 Maven 的项目包含和加载嵌入式资源
在传统/基于 Ant 的项目中,可以简单地将嵌入资源放入源包
中并使用Class#getResource
加载它,但由于某种原因,基于 Maven 的项目的工作方式不同。
以下代码在使用 Ant 时有效,但在使用 Maven 时失败:
import java.io.IOException;
import javax.imageio.ImageIO;
public class Main {
public static void main(String[] args) throws IOException {
new Main();
}
public Main() throws IOException {
ImageIO.read(getClass().getResource("/images/Background.jpg"));
}
}
所以,简单的问题是,在 Netbeans 12x 中使用 Maven 时如何包含嵌入式资源
最佳答案
Maven 对于源文件和“其他资源”的存储位置有自己的要求。与 Ant 不同,您不能简单地将“资源”放入 src/main/java
目录中,而是需要将它们添加到 src/main/resources
目录中.
但是,出于某种原因,Netbeans 似乎没有为您创建此目录(至少没有为我使用的基本“应用程序”模板创建此目录)。
在这种情况下,您需要自己创建它。您可以从命令行或文件管理器执行本手册,但 Netbeans 也允许您创建。
首先右键单击项目的根节点并选择“新建/文件夹”
在对话框中,将文件夹命名为 resources
,然后点击“浏览”按钮(“父文件夹”旁边)
选择src/main
目录
点击“完成”,项目中应出现一个名为“其他源”的新“节点”
现在,我希望可以说向此目录添加资源很容易,但我最终只是使用文件管理器将文件直接复制并粘贴到该目录。
包含资源后(它们应该显示在“其他来源”节点下),您可以从代码中引用它们。
但要记住的重要一点是,您不需要在路径中包含资源
,因为目录的内容将复制到生成的产品中,而不是目录本身。
因此,布局为:
以下代码将毫无问题地加载图像:
import java.io.IOException;
import javax.imageio.ImageIO;
public class Main {
public static void main(String[] args) throws IOException {
new Main();
}
public Main() throws IOException {
ImageIO.read(getClass().getResource("/images/Background.png"));
}
}
关于java - Netbeans (12x)/Maven 包含并加载嵌入式资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69308166/