java - 为什么 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 上工作。我真的很感激帮助。谢谢。
解决方案
使用 ImageIO:
Image img = ImageIO.read(file);
getResourceAsStream
需要类路径上的路径。由于资源可能在 jar 中,因此其完整 URI 将是jar:file:/..../xyz.jar!/...
. 并且File
在文件系统上。
不能将这些混合在一起,只有Path
一种新的概括允许在几个“文件”系统中使用路径。
推荐阅读
- python - 如何将 Pandas 数据框值与列表进行比较,并将结果放入新列
- c++ - 如何从 C++ 中的文本文件中删除一行?
- php - 多个文本区域字段 php/html 的一个提交按钮
- reactjs - 在弹出的 create-react-app 中提取和引用多个 CSS 文件
- sql - SQL 按星期几分组日期并获取计数
- sql - ORACLE 中 GROUP BY 的小计
- reactjs - 为什么我无法运行 React Native 项目(转换错误)
- java - 以下情况的替代方案
- java - 在所有三个项目都更新后运行 if 条件
- python - 循环遍历 numpy 数组以将它们保存为 tif 文件