首页 > 解决方案 > 为什么 getClass().getResourceAsStream(file.getAbsolutePath()) 会抛出 nullPointerException?

问题描述

在我为我的问题寻找解决方案并阅读了比我更专业的类似问题之后,......好吧,我希望你注意我的问题,即使它看起来很简单!我正在开发一个通过 FileChooser 打开文件的项目,然后我试图在窗格上显示它。问题是 getClass().getResourceAsStream(file.getAbsolutePath()) 返回 null。所以虽然我可以打印路径并看到它是真的,但我不能在创建图像时使用它。我的部分代码是:

    FileChooser fileChooser = new FileChooser();
    File file = fileChooser.showOpenDialog(stage);

...

     Image img = new Image(getClass().getResourceAsStream(file.getAbsolutePath());

例外是:

    Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Input stream must not be null ...

我通过 NetBeans 在 Ubuntu 上工作。我真的很感激帮助。谢谢。

标签: javaimagenullpointerexceptioninputstreamfilechooser

解决方案


使用 ImageIO:

Image img = ImageIO.read(file);

getResourceAsStream需要类路径上的路径。由于资源可能在 jar 中,因此其完整 URI 将是jar:file:/..../xyz.jar!/.... 并且File在文件系统上。

不能将这些混合在一起,只有Path一种新的概括允许在几个“文件”系统中使用路径。


推荐阅读