gpt4 book ai didi

java - 无法访问资源文件夹中的文件

转载 作者:行者123 更新时间:2023-12-01 23:29:05 25 4
gpt4 key购买 nike

我正在尝试加载存储在/src/main/resources 文件夹中的图像。然而,当我这样做时,我不断遇到由于找不到资源而导致的 NullPointerException。

这是代码片段:

        try {
String path = this.getClass().getClassLoader().getResource("bern.png").toString();
} catch (IOException ex) {
System.out.println(path);
}

这是我的项目文件树的图像:

An image of my project file tree

这是我的目标构建文件树的图像:

An image of my target build file tree

这是 NullPointerException 堆栈跟踪: https://pastebin.com/KqJVxWEL

我已经尝试很好地使用我能想到的图像文件的所有可能路径。 (/src/main/resources/bern.png、src/main/resources/bern.png、/bern.png 等)。

我还尝试使用 getClass().getClassLoader().getResource() 而不是 getClass().getResource()。据我了解,getResource()ClassClassLoader 版本之间的唯一区别是 Class版本本质上并不是相对于根而言绝对的,而 ClassLoader 版本则是绝对的。

当我运行 getClass().getResource("").toPath() 时,我得到了指向 classes 目录的路径。这与我读到的关于使用目标构建文件树的 getResource() 方法的内容一致。但是,我没有看到资源文件夹出现在目标构建中的任何位置;我认为这是我问题的核心。我只是不知道如何解决它。

我知道这个问题之前已经被问过很多次了,但是这个问题的其他版本的答案并没有给我带来多大帮助。

我使用的是 NetBeans 11,并且该项目在 Maven 构建系统上运行。我过去没有用 Maven 做过太多工作,所以如果这个问题非常容易解决,请原谅我。

有人知道我是如何处理这个错误的吗?

编辑:问题不在于我的项目结构或代码,如通过命令行使用 mvn 运行时正确编译的代码所示。因此,这是 NetBeans 特有的问题以及它查看资源文件夹的方式的问题。

最佳答案

以 Stream 的形式读取资源内容(而不是 URL 或文件路径)

public static void main(String[] args) throws IOException {
InputStream in = Application.class.getClassLoader().getResourceAsStream("bern.png");
BufferedImage testImage = ImageIO.read(in);
ImageIcon icon = new ImageIcon(testImage);
}

关于java - 无法访问资源文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com