【问题标题】:Image disappeared after converting project to Maven将项目转换为 Maven 后图像消失了
【发布时间】:2019-07-09 17:17:30
【问题描述】:

我有一个小型 JavaFX 应用程序。一切看起来都很好,并且工作正常。突然想把这个项目转成 Maven 项目(我想添加一些外部依赖并在应用中使用)。

在 Eclipse 中,我右键单击该项目,选择Configure,然后选择Convert to Maven project...。一切都很顺利,直到我构建并运行了应用程序。整个应用程序运行良好,但应用程序窗口中有一个徽标,并且在将项目转换为 Maven 后 - 图像消失了。

我正在使用带有 FXML 和 SceneBuilder 的 JavaFX。

RootLayout.fxml文件中,有一个条目:

<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="225.0" layoutY="50.0" pickOnBounds="true" preserveRatio="true">
   <image>
      <Image url="@../../../../../../resources/images/nbtc.jpg" />
   </image>
</ImageView>

转换为 Maven 后在SceneBuilder 中仍可见,但运行后已从应用中消失。

这是文件夹结构:

有趣的是,programicon32.png 工作正常并且显示在应用程序中。但它是在 FXML 文件之外的另一个地方定义的:

@Override
public void start(Stage primaryStage) {
    ...
    this.primaryStage.getIcons().add(new Image("file:resources/images/programicon32.png"));
    initRootLayout();
    ...
}

编辑:

我已将图像移动到 RootLayout.fxml 所在的同一包中,并在 SceneBuilder 中选择了移动的图像,图像现在正在显示,但是,这不是我的机器人正在寻找...

【问题讨论】:

标签: java maven javafx fxml


【解决方案1】:

按照惯例,maven 使用特定的目录结构,最好也使用它。 (它是可配置的,但我从来不需要这样做,而且对于刚接触 maven 的人来说,它会适得其反。)

src/
    main/                            // For the application code
        java/
             (com/lva/nbc/...')
        resources/
             (images/)
    test/                            // For unit tests
        java/
        resources/

这样jar/war/ear文件/类路径将包含我放入(...)的路径。

getClass().getResourceAsStream("/images/nbct.jpg")

【讨论】:

    【解决方案2】:

    项目文件夹结构与运行时类路径的结构不同。假设资源正确包含在构建路径中,则运行时类路径中图像和fxml的绝对路径为

    /images/nbtc.jpg
    

    /com/l4a/mbtc/application/util/RootLayout.fxml
    

    因此需要将图片指定为

    <Image url="@../../../../../images/nbtc.jpg" />
    

    您也不应该依赖图像在运行时作为文件可用。通常资源作为条目包含在.jar 文件中;这不允许通过file: 协议进行访问。请改用getResource

    this.primaryStage.getIcons().add(new Image(getClass().getResource("/images/programicon32.png").toExternalForm()));
    

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 2017-03-25
      • 2017-10-19
      • 2013-10-29
      • 2012-09-23
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      相关资源
      最近更新 更多