Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 无法加载图像-Javafx_Image_Javafx_Load - Fatal编程技术网

Image 无法加载图像-Javafx

Image 无法加载图像-Javafx,image,javafx,load,Image,Javafx,Load,我正在尝试用代码加载图像: Image image = new Image(AddOrderController.class.getResourceAsStream("/resources/icons/ok_icon.png")); 我收到一个例外: java.lang.NullPointerException: Input stream must not be null 我的项目树很简单: 当我将ok\u icon.png添加到package controller时,一切正常,图标正常,

我正在尝试用代码加载图像:

Image image = new Image(AddOrderController.class.getResourceAsStream("/resources/icons/ok_icon.png"));
我收到一个例外:

java.lang.NullPointerException: Input stream must not be null
我的项目树很简单:


当我将
ok\u icon.png
添加到package controller时,一切正常,图标正常,但在
resources/icons
中无法加载图标。有人能帮我重做代码吗?

看起来你必须先上一个目录:

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

如果这两者都不起作用,请检查两个源文件夹(src)是否真的相同,或者它们是否有不同的父文件夹

,因为您有
src/test/resources
作为源文件夹,所以
resources
的内容将作为应用程序的一部分部署到类路径的根目录。这意味着
图标
位于类路径的根目录中

您可以通过使用系统文件浏览器(Mac上的Finder,或Windows explorer,或现在称之为的任何东西)检查输出文件夹的内容来验证这一点,我猜它是
target/classes
。您可以在Eclipse中验证输出文件夹,方法是从菜单中选择“项目”,然后选择“属性”,选择“Java构建路径”,选择“源”选项卡,然后查看指定为“默认输出文件夹”的内容

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

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

应该行得通。

不行。我还检查了文件夹的位置。永远不要在资源路径中使用
。这不是有效的资源名称。(如果路径正确,当您的资源位于文件系统上时,它将工作,但当您将应用程序捆绑到jar文件中时,它将失败。)