在浏览器中 运行 时,JavaFX getResource return null

JavaFX getResource return null when running in browser

我有一个 javafx 应用程序,我将所有 fxml 文件存储在 src/foo/bar/fxui 文件夹中。我使用下面的代码来引用 fxml 文件:

FXMLLoader loader = new FXMLLoader(getClass().getResource("/foo/bar/fxui/file.fxml"));
Parent root = (Parent) loader.load();

来电class在src/foo/bar。

当我在 Eclipse 中 运行 这段代码运行良好。为了部署它,我使用 efxclipse 将它导出为 JAR。当我直接 运行 JAR 文件时,它也能很好地工作。但是,当我尝试在浏览器中启动此应用程序时代码中断 (Chrome/IE)。它告诉我 "Location is not set"。我已解决以下行 returns null:

getClass().getResource("/foo/bar/fxui/file.fxml")

所以我看来是无法通过指定路径获取文件的问题。我试过将 fxml 文件放入 main/resources/foo/bar/fxui 文件夹中。它也不起作用。

我确定所需的文件在 JAR 存档中。问题是,当我通过双击打开 JAR 文件时 运行s,但它在浏览器中没有 运行。

这个问题我花了一整天的时间。非常感谢任何帮助!

我自己解决了这个问题。根本原因是我没有正确签署我的罐子。

Java getResource() 使用反射,如果没有有效证书将无法正确执行。在这种情况下,自签名的 jar 就可以了。

也感谢上面的每一个输入。