【问题标题】:Why getClass().getResourceAsStream(file.getAbsolutePath()) throws nullPointerException?为什么 getClass().getResourceAsStream(file.getAbsolutePath()) 会抛出 nullPointerException?
【发布时间】:2019-12-11 14:59:53
【问题描述】:

在我为我的问题寻找解决方案并阅读了比我更专业的类似问题之后,......好吧,我希望你关注我的问题,即使它看起来很简单! 我正在开发一个通过 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 上工作。 我真的很感激帮助。谢谢。

【问题讨论】:

  • 如果你想要一个解决方案,你应该提供整个异常消息,这样会更容易
  • getResourceAsStream 的参数不是文件路径。使用new Image(file.toURI().toString()) 读取文件。
  • @VGR 谢谢,成功了。

标签: java image nullpointerexception inputstream filechooser


【解决方案1】:

使用 ImageIO:

Image img = ImageIO.read(file);

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

不能混合使用,只有 Path 是一种新的泛化,允许在多个“文件”系统中使用路径。

【讨论】:

  • 谢谢,但我想使用文件系统。实际上我想解决这个问题,然后为每种类型的文件扩展类。现在,我想看看我是否可以像 Photoshop 那样做某事。
  • 要明确:以上内容适用于您的 FileChooser,在物理磁盘上选择一个文件。而且 ImageIO 也可以从任何 InputStream 中读取,而不仅仅是 File。
  • 非常感谢。我会越来越多地阅读它,以更好地理解你教给我的东西。
猜你喜欢
  • 2010-11-22
  • 2016-02-10
  • 2014-12-18
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多