gpt4 book ai didi

java - Class.getResource() 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 04:30:23 24 4
gpt4 key购买 nike

我有一个 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 错误,还是我做错了什么?

最佳答案

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

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

关于java - Class.getResource() 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14788403/

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