java - Netbeans (12x)/Maven 包含并加载嵌入式资源?

标签 java maven netbeans netbeans-12

简单问题,使用 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 也允许您创建。

首先右键单击项目的根节点并选择“新建/文件夹”

Project Folder

在对话框中,将文件夹命名为 resources,然后点击“浏览”按钮(“父文件夹”旁边)

Options

选择src/main目录

Destination Finally

点击“完成”,项目中应出现一个名为“其他源”的新“节点”

Finally

现在,我希望可以说向此目录添加资源很容易,但我最终只是使用文件管理器将文件直接复制并粘贴到该目录。

包含资源后(它们应该显示在“其他来源”节点下),您可以从代码中引用它们。

但要记住的重要一点是,您不需要在路径中包含资源,因为目录的内容将复制到生成的产品中,而不是目录本身。

因此,布局为:

Final layout

以下代码将毫无问题地加载图像:

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/

相关文章:

maven - Apache Maven 错误 : Could not transfer artifact org. apache.maven.plugins :maven-clean-plugin:pom: 2. 5 到中央

JavaMail 创建可见文件夹

hibernate 空间 : "No Dialect mapping for JDBC type: 3000"

java - 从命令行搜索 Maven 过滤器

java - 如何删除JList中的多个项目

java - Netbeans : Can not access instrumentation environment 中的大量在线分析

java - 如何在 NetBeans 中设置类路径?

通过 shell 脚本的 Java 命令行参数

java - 有没有办法概括 Apache ANT 目标?

java - 如何使用java日历获取该月的第一天?