Class.getResource()的奇怪行为

时间:2013-02-09 12:57:15

标签: java netbeans resources classloader

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

URL url = Class.class.getResource("/imgs/on.png");

这是成功的 - 就在几天前。今天,在执行此代码之后,url变量被设置为null。但是当代码被修改为:

URL url = Class.class.getResource("/imgs");

(url!= null)是真的。

接下来,我创建了另一个项目,在那里我完成了相同的操作(即,在项目文件夹中创建子目录,将一些文件加载​​到它并尝试执行代码,类似于这些上面写的)。这些操作是成功的。之后,我回到了我的第一个项目(在尝试访问“/imgs/on.png”时将url初始化为null)。事实证明,一切都再次正常,图像的URL已成功加载......

所以,问题是,问题是什么?这是一个NetBeans错误,还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

顺便说一句,你应该使用来电者的班级代替Class.class.getResource(),例如this.getClass().getResource()使用相同的类加载器。

相关问题