无法访问资源文件夹中的文件
Can't Access File in Resources Folder
我正在尝试加载存储在 /src/main/resources 文件夹中的图像。但是,当我这样做时,我会 运行ning 进入一个 NullPointerException,该异常源于未找到资源。
这是代码片段:
try {
String path = this.getClass().getClassLoader().getResource("bern.png").toString();
} catch (IOException ex) {
System.out.println(path);
}
这是我的项目文件树的图像:
这是我的目标构建文件树的图像:
这是 NullPointerException 堆栈跟踪:
https://pastebin.com/KqJVxWEL
我已经尝试很好地使用我能想到的图像文件的所有可能路径。 (/src/main/resources/bern.png、src/main/resources/bern.png、/bern.png 等)。
我也尝试过使用 getClass().getClassLoader().getResource()
而不是 getClass().getResource()
。据我了解,getResource()
的 Class
和 ClassLoader
版本之间的唯一区别是 Class
版本本质上不是绝对相对于根的,而 ClassLoader
版本是。
当我运行 getClass().getResource("").toPath()
时,我得到了通往classes
目录的路径。这与我读到的有关使用目标构建文件树的 getResource()
方法的内容一致。但是,我没有看到资源文件夹出现在目标构建中的任何地方;我认为这是我问题的核心。我只是不确定如何解决它。
我知道这个问题以前被问过很多次,但是这个问题的另一个版本的答案对我帮助不大。
我正在使用 NetBeans 11,此项目 运行正在 Maven 构建系统上运行。我过去没有用 Maven 做过太多工作,所以如果这个问题非常容易解决,请原谅我。
有人知道我是如何处理这个错误的吗?
编辑:问题不在于我的项目结构或代码,正如代码在通过命令行使用 运行 使用 mvn
时正确编译所显示的那样。因此,这是 NetBeans 的一个问题,特别是它查看资源文件夹的方式。
将资源内容作为流读取(而不是 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);
}
我正在尝试加载存储在 /src/main/resources 文件夹中的图像。但是,当我这样做时,我会 运行ning 进入一个 NullPointerException,该异常源于未找到资源。
这是代码片段:
try {
String path = this.getClass().getClassLoader().getResource("bern.png").toString();
} catch (IOException ex) {
System.out.println(path);
}
这是我的项目文件树的图像:
这是我的目标构建文件树的图像:
这是 NullPointerException 堆栈跟踪: https://pastebin.com/KqJVxWEL
我已经尝试很好地使用我能想到的图像文件的所有可能路径。 (/src/main/resources/bern.png、src/main/resources/bern.png、/bern.png 等)。
我也尝试过使用 getClass().getClassLoader().getResource()
而不是 getClass().getResource()
。据我了解,getResource()
的 Class
和 ClassLoader
版本之间的唯一区别是 Class
版本本质上不是绝对相对于根的,而 ClassLoader
版本是。
当我运行 getClass().getResource("").toPath()
时,我得到了通往classes
目录的路径。这与我读到的有关使用目标构建文件树的 getResource()
方法的内容一致。但是,我没有看到资源文件夹出现在目标构建中的任何地方;我认为这是我问题的核心。我只是不确定如何解决它。
我知道这个问题以前被问过很多次,但是这个问题的另一个版本的答案对我帮助不大。
我正在使用 NetBeans 11,此项目 运行正在 Maven 构建系统上运行。我过去没有用 Maven 做过太多工作,所以如果这个问题非常容易解决,请原谅我。
有人知道我是如何处理这个错误的吗?
编辑:问题不在于我的项目结构或代码,正如代码在通过命令行使用 运行 使用 mvn
时正确编译所显示的那样。因此,这是 NetBeans 的一个问题,特别是它查看资源文件夹的方式。
将资源内容作为流读取(而不是 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);
}