2013-02-09 47 views
1

我有一个NetBeans项目。在项目目录中,我创建了一些用于保存资源的附加目录(图像)。所以我的一个图像的路径是“/res/imgs/on.png”(“res”,其中的所有内容都由我创建)。然后我将“res”目录添加到项目的源代码中(右键单击NetBeans中的项目 - > Properties - > Sources - > Add Folder(for Source Packages Folder section))。我已经使用以下代码访问了我项目中图像的URL:Class.getResource()的一个奇怪的行为

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错误,或者我正在做一件错误的事情?

+1

“我的代码*不工作*,我有**不知道**为什么..我的代码*工程*,我有**不知道**为什么” – Maroun 2013-02-09 13:23:56

回答

2

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

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