2017-02-25 58 views
0

我真的试图加载图像的代码:图片不能加载 - JavaFX的

Image image = new Image(AddOrderController.class.getResourceAsStream("/resources/icons/ok_icon.png")); 

我收到异常:

java.lang.NullPointerException: Input stream must not be null 

我的项目的树很简单:

tree of project

当我加入ok_icon.png包装控制器一切正常,并图标的作品,但在resources/icons无法加载图标。任何人都可以帮助我如何重制代码?

回答

1

由于您有src/test/resources作为源文件夹,因此resources的内容将作为应用程序的一部分部署到类路径的根目录。这意味着,icons是在类路径的根。

您可以通过使用系统文件浏览器(Mac上的Finder或Windows资源管理器,或近期调用的任何内容)检查输出文件夹的内容(我猜测它是target/classes)来验证此内容。您可以通过选择“项目”,从菜单,然后单击“属性”验证Eclipse中的输出文件夹,选择“Java构建路径”,选择“源”选项卡,看到被指定为“默认输出文件夹”。

如果您提供给getResourceAsStream的路径以前导/开头,则路径将相对于类路径进行解释。所以

Image image = new Image(AddOrderController.class.getResourceAsStream("/icons/ok_icon.png")); 

应该工作。

-2

看起来像你必须去一级目录第一:

Image image = new Image(AddOrderController.class.getResourceAsStream("../resources/icons/ok_icon.png")); 

如果不工作都不是,检查这两个源文件夹(SRC)实际上是一样的,或者如果他们有不同的父文件夹

+0

它不'吨的工作。我也检查了文件夹的位置。 –

+2

切勿在资源路径中使用'..'。这不是有效的资源名称。 (它会工作,如果路径是正确的,当你的资源是在文件系统上,但是当你在捆绑一个jar文件的应用程序将失败。) –