为什么我的资源没有加载?

时间:2014-06-15 19:35:25

标签: java image resources classloader

我已经阅读了~4 Stackoverflow帖子(12),并且在那里解释了所有类似的内容,但是当我尝试加载图片时,我收到了NullPointerException。

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

我的包结构:

packages http://i62.tinypic.com/n3b0wl.png

我尝试加载图片的代码:

Image image = new Image(this.getClass().getResourceAsStream("/regexgolf2/ui/img/edit.png"));

我不明白为什么它不起作用。

3 个答案:

答案 0 :(得分:2)

您的图片位于src文件夹下的包中。类加载器不会查找文件。类加载器在类路径中查找文件。

为了使getResource适用于您的情况,您需要将图像放在类路径中。

我建议您手动将图像文件复制到构建文件夹(在同一路径下,例如out/regexgolf2/ui/images并再次运行您的应用。

如果它有效,您可以开始考虑将文件放到类路径中的方法(例如,将它们作为构建/打包过程的一部分复制或将它们放在类路径中的另一个文件夹中)。

答案 1 :(得分:1)

对于netbeans maven javaFX项目,资源(img文件夹)必须位于资源文件夹中:

enter image description here

然后您可以加载资源,例如:

Image escribir = new Image(getClass().getResourceAsStream("/img/login.png"));

答案 2 :(得分:0)

我在IntelliJ中也遇到了类似的问题,虽然看起来都不错,但是没有用。就我而言,当我重建项目时,所有工作都能正常进行。