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



我有一个NetBeans项目。在项目目录中,我创建了一些额外的目录来保存资源(图像)。因此,我的一个图像的路径是"/res/imgs/on.png"("res",其中的所有内容都是我创建的)。然后,我将"res"目录添加到我的项目的源代码中(右键单击NetBeans->Properties->sources->Add Folder中的我的项目(对于Source Packages 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"不在classes目录中,因此在类路径中找不到。在重新启动或任何会导致Netbeans重新扫描源文件夹的操作之后,它又回到了那里。

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

相关内容

  • 没有找到相关文章

最新更新