【问题标题】:Accessing resources embedded in jar from FXML从 FXML 访问嵌入在 jar 中的资源
【发布时间】:2014-07-11 02:34:26
【问题描述】:

我很难从 fxml 文件加载位于 jar 文件中的文件(在我的情况下是 .png 和 .css)。

文件夹结构非常通用,如下所示:

/com/project/client/
   main/
      client.jar
   fxml/
      client.fxml
   resources/
      image.png

在我的 fxml 文件中,我有一个图像。它像这样加载图像:

<Image url="@../resources/image.png" />

当我通过 Eclipse 运行它时,一切正常。我怀疑这是因为 Eclipse 创建了一个 bin\ 目录,它将项目的所有内容导出为实际文件夹中的 .class 文件。当您尝试将其编译为 jar 并运行它时,一切都失败了,因为 fxml 没有意识到我需要它来加载包含在 jar 本身中的文件。

我进行了广泛搜索,但找不到任何可以帮助我解决此问题的方法。这里有没有人知道如何解决这个问题?

谢谢!

【问题讨论】:

  • 为什么不直接在 FXML 中给出一些 id,然后将其加载到控制器上?
  • 这意味着单独查看 fxml 文件会产生没有 css 样式和空图像的模糊结果。它当然可以工作,但它不是最佳的!我认为像 javafx 这样的技术将具有这样的功能,这样我就不需要“破解”,在代码中应用 css 等。
  • image.png 在 JAR 中的位置是什么?
  • 用 7-zip 打开 jar,文件的位置如预期:在 com\project\client\resources\image.png

标签: java javafx javafx-8


【解决方案1】:

试试

<Image url="/com/project/client/resources/image.png"/>

【讨论】:

  • 非常有趣......它有效!客气。它通过 Eclipse 工作,它通过导出为 jar 工作。但是,直接通过 Scene Builder 打开 fxml 会导致找不到图像。谢谢你!...但是有什么方法可以让它通过场景构建器工作吗?
  • 没有线索。我不使用 Scene Builder(很多)......不知道为什么它会在那里失败。
猜你喜欢
  • 2017-01-18
  • 2016-12-29
  • 2012-05-11
  • 2012-11-28
  • 2011-02-08
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多