gpt4 book ai didi

java - 为什么 JVM 声称我的 PNG 不存在?

转载 作者:行者123 更新时间:2023-12-01 22:31:11 24 4
gpt4 key购买 nike

我正在尝试在 JFrame 上设置左上角图像。但是,它声称我的 PNG 文件不存在。我设置了图标

mainFrame.setIconImage(new ImageIcon(getClass().getResource("C:/Users/Steve/Programming/Projects/Java/BibleReader/bibleReader/src/test/resources/assets/bible/textures/icon.png")).getImage());

这是错误

Exception in thread "main" java.lang.NullPointerException at
javax.swing.ImageIcon.<init>(Unknown Source) at
com.nickson.input.UI.prepareGUI(UI.java:42) at
com.nickson.input.UI.<init>(UI.java:33) at
com.nickson.main.Engine.main(Engine.java:19)

为什么会发生这种情况?

最佳答案

Why is this happening?

您正在尝试使用文件系统中的路径打开资源。资源路径应该相对于应用程序类路径上的目录或 JAR 文件。

因此,在您的特定情况下,类加载器正在寻找相对于当前类的资源位置的名为“C:”的资源文件夹。自然是不存在的。由于如果找不到资源,getResource 将返回 null,这会导致 NPE。

以下几页详细说明了资源加载和资源路径解析的实际工作原理:

<小时/>

作为猜测,假设您使用的是 Maven,我认为如果您的代码在单元测试中运行,则路径 "/assets/bible/textures/icon.png" 会起作用。对于生产代码,我认为您的资源位于错误的树中;它应该位于 .../main/resources/ 树中。

关于java - 为什么 JVM 声称我的 PNG 不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27714465/

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