样式表未加载到作为 PKG 发布的模块化 JavaFX 应用程序中

问题描述 投票:0回答:1

我有一个模块化的 JavaFX 应用程序。当我使用 IDE IntelliJ 运行它时,它可以完美加载所有样式表。

但是,当我将应用程序发布为 Mac 平台的 PKG 并尝试运行时,没有 CSS 应用于该应用程序。 PKG 文件在 Mac 上成功安装 JavaFX 应用程序,但未加载样式表。

应用程序按预期运行,但未应用任何 CSS。

我正在使用 openJDK-15.0.2 并使用 jpackage 生成 PKG 文件。 文件夹结构:

Folder structure

获取资源:

Class clazz = SocketClientFX.class;        
Scene scene = new Scene(root);
scene.getStylesheets().add(clazz.getResource("/styles/Styles.css").toString());
css javafx modularity java-module
1个回答
3
投票

我通过在每个资源文件夹的 module-info.java 中添加“opens”解决了这个问题。

例如:

opens styles.common;
opens jsonFiles;
opens images.common;
opens styles.stevePane;
etc...

代码中,各个资源的访问方式如下:

containerBorderPane.getStylesheets().add("/styles/stevePane/loadingWindow.css");

然后我再次构建项目并创建一个新的 PKG 文件。当我安装并再次运行它时,包括 CSS 文件在内的所有资源都已加载。

当通过 getResource() 访问资源时,如下所示,我们不需要在

opens directive
中添加
module-info.java

scene.getStylesheets().add(clazz.getResource("/styles/Styles.css").toString());

谢谢@James_D 和@Slaw 的评论。

© www.soinside.com 2019 - 2024. All rights reserved.