无法加载图像 - Javafx

Image cannot be loaded - Javafx

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

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

我收到异常:

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

我的项目树很简单:

当我将 ok_icon.png 添加到包控制器时,一切正常并且图标可以工作,但在 resources/icons 中无法加载图标。谁能帮我重写代码?

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

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

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

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

您可以通过使用系统文件浏览器(Mac 或 [=30= 上的 Finder)检查输出文件夹的内容来验证这一点,我猜是 target/classes ] explorer,或者现在叫什么)。您可以通过从菜单中选择 "Project",然后选择 "Properties"、select、"Java Build Path"、select "Source" 选项卡来验证 Eclipse 中的输出文件夹,并查看指定为 "Default output folder".

的内容

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

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

应该可以。