getResourceAsStream返回具有正确路径的null

时间:2019-12-13 18:20:09

标签: java

我的一段代码:

private InputStream assetFromJAR(String fileName) {
    return getClass().getResourceAsStream("/view/assets/ims/" + fileName + ".png");
}

返回始终为空...

我的结构是:

src
  main
   java  <- source root
     view
       assets
         ims

它不知道为什么会这样,路径是正确的,为什么它总是返回null?

感谢答案!

2 个答案:

答案 0 :(得分:0)

Maven Java项目的结构方式是将* .java文件和资源文件(例如* .properties,*。jpg,*。png等)分开。

  • 对于* .java文件:src / main / java文件夹
  • 有关资源:src / main / resources

因此,将资源文件直接放在“ src / main / resources”或资源目录的子文件夹下(如项目的“ src / main / resources / view / assets / ims /”)。

然后,您可以轻松访问资源文件。

private InputStream assetFromJAR(String fileName) {
     return getClass().getResourceAsStream("/view/assets/ims/" + fileName + ".png");
}

答案 1 :(得分:-1)

我将从一些显而易见的事情开始,因为您还没有指出尝试过的内容。如果您已经完成或知道这一点,我深表歉意。

以“ /”开头的路径位于类路径中的某个位置。不以“ /”开头的路径从调用代码的地方开始。您的类路径根目录可能与您想像的不一样,或者.png文件没有从源目录移动到目标目录。

您是否已验证文件位于目标目录中(假设您使用maven进行构建),或者您的.class文件最终位于何处?

您是否已验证自己的课程路径根目录是什么?