java - 为什么class.getResource()在指定路径下有资源却一直返回null?

标签 java eclipse class getresource

我想知道为什么 getResource 方法一直返回 null,我有以下设置:

public static URL getResource(String path){
    URL url = ResourceLoader.class.getResource(path);
    if (Parameters.DEBUG){
        System.out.println(path);
    }
    return url;
}

我在Eclipse中的项目结构如下:

-- res
  -- img

我传递给 getResourcepath 变量的值为 "/res/img""/res/img/微笑.png”。然而该方法一直返回 null 并且 url 未设置。我也按照 this question 的说明进行操作,这是通过运行配置将文件夹添加到项目的类路径,仍然没有成功...有人知道我做错了什么吗?

enter image description here

最佳答案

简答:使用"/img/smile.png"

实际发生的情况是,任何以 / 开头的路径(提供给 Class.getResource 方法)始终被视为相对于类路径中的每个条目。

如您的屏幕截图所示,res 目录就是这样一个类路径条目。因此 Class.getResource 方法将您提供的路径视为相对于该条目的路径。意思是,相对于 res 目录。

因此,该方法将您的字符串参数与该目录相结合,生成 res/res/img/smile.png。由于该位置不存在文件(资源),因此它返回 null。

关于java - 为什么class.getResource()在指定路径下有资源却一直返回null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219224/

相关文章:

java - Android 中的外部 JAR 错误

eclipse - 如何使用 Eclipse 首选项页面中的值来初始化外部工具参数?

Java ReplaceAll 正则表达式具有相似的结果

java - 在 JSP 的 java 脚本中操作和存储 Java hashmap( map 的 map )以便稍后在组合菜单中使用

java - 主应用程序线程在到达方法末尾之前不会更新 GUI

android - ADT 插件安装在 Eclipse Classic 3.6 上保持在 49%

java - 如何在数组中存储新的客户端信息并能够在java中再次查看它?

php - 在 WooCommerce 中更改现有订单的订单项名称

java - 将 System.out.format 翻译成 Clojure

java - 使用一对一关系 hibernate 进行更新