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文件中时,它将失败。)