【问题标题】:NullPointerException: Input stream must not be null putting a image in a button in javafxNullPointerException:输入流不能为空,将图像放在 javafx 中的按钮中
【发布时间】:2019-02-27 13:03:48
【问题描述】:

我的代码是这样的:

project/src/com/controller/controller.java

图片在

 project/resources/user/default_browser.png

我不应该通过这条路线到达图像

        Image imageOk = new Image(getClass().getResourceAsStream("../../../resources/user/default_browser.png"));
        btn.setGraphic(new ImageView(imageOk));

【问题讨论】:

  • 请阅读 getResourceAsStream 的 api 文档 - 它没有提到它支持“../../”之类的东西,是吗:)

标签: java javafx


【解决方案1】:

resources 目录的内容放在你的 jar 文件的根目录下,所以你应该按如下方式访问它们:

Image imageOk = new Image(getClass().getResourceAsStream("user/default_browser.png"));
btn.setGraphic(new ImageView(imageOk));

【讨论】:

  • 仍然得到“输入流不能为空”
  • 使用像src/main/java/com/controller/controller.javasrc/main/resources/user/default_browser.png这样的文件夹结构。然后尝试@Sergei 提到的 - getClass().getResourceAsStream("user/default_browser.png")
  • 这仅在 OP 使用 Maven 作为其构建工具时才有效。 @danielgon 你能澄清一下你使用什么构建系统(Maven、Gradle、Eclipse、IDEA...?)
  • 我在 Eclipse 中,不使用 Maven
  • "user/default_browser.png" 是一个相对路径,但从问题来看,Class 与资源位于不同的包中。 @danielgon 如果您尝试"/user/default_browser.png" 会怎样?
猜你喜欢
  • 1970-01-01
  • 2017-10-04
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2019-01-12
  • 1970-01-01
  • 2016-10-17
相关资源
最近更新 更多