Java Class.getResource()的一种奇怪行为

Java Class.getResource()的一种奇怪行为,java,netbeans,resources,classloader,Java,Netbeans,Resources,Classloader,我有一个NetBeans项目。在项目目录中,我创建了一些额外的目录来保存资源(图像)。因此,我的一幅图像的路径是“/res/imgs/on.png”(“res”,其中的所有内容都是我创建的)。然后,我将“res”目录添加到我的项目的源代码中(右键单击NetBeans->Properties->sources->Add Folder(用于源代码包文件夹部分)中的我的项目)。我使用以下代码访问了项目中图像的URL: URL url = Class.class.getResource("/imgs/o

我有一个NetBeans项目。在项目目录中,我创建了一些额外的目录来保存资源(图像)。因此,我的一幅图像的路径是“/res/imgs/on.png”(“res”,其中的所有内容都是我创建的)。然后,我将“res”目录添加到我的项目的源代码中(右键单击NetBeans->Properties->sources->Add Folder(用于源代码包文件夹部分)中的我的项目)。我使用以下代码访问了项目中图像的URL:

URL url = Class.class.getResource("/imgs/on.png");
这是成功的——就在几天前。今天,在执行此代码之后,url变量被设置为null。但当代码被修改为:

URL url = Class.class.getResource("/imgs");
(url!=null)为true

接下来,我创建了另一个项目,在那里我做了完全相同的操作(即,在项目文件夹中创建子目录,向其中加载一些文件,并尝试执行代码,类似于我上面编写的代码)。这些操作是成功的。之后,我返回到我的第一个项目(当尝试访问“/imgs/on.png”时,该项目将url初始化为null)。结果是,一切又恢复正常,图像的URL加载成功


问题是,问题出在哪里?这是一个NetBeans错误,还是我做了一些错误的事情?

可能是由于某些NetBeans编译/清理故障,“on.png”不在类目录中,因此在类路径上找不到。在重新启动或任何可能导致Netbeans重新扫描源文件夹的操作之后,它又回到了那里

顺便说一句,您不应该使用调用方的类,例如
this.getClass().getResource()
来使用相同的类加载器。

“我的代码不工作,我不知道为什么..我的代码工作,我不知道为什么”