我有一个javafx应用程序,我将所有的fxml文件存储在src/foo/bar/fxui文件夹中。我使用下面的代码来引用fxml文件:
FXMLLoader loader = new FXMLLoader(getClass().getResource("/foo/bar/fxui/file.fxml"));
Parent root = (Parent) loader.load();调用类位于src/foo/bar中。
当我在Eclipse中运行它时,这段代码工作得很好。为了部署它,我使用efxclipse将其导出为JAR。当我直接运行JAR文件时,它也运行得很好。但是,当我试图在浏览器(Chrome/IE)中启动这个应用程序时,代码会中断。它告诉我“位置没有设定”。我已经排除了以下行返回null的问题:
getClass().getResource("/foo/bar/fxui/file.fxml")因此,在我看来,这是一个无法按指定路径获取文件的问题。我尝试将fxml文件放入main/resources/foo/bar/fxui文件夹中。也不起作用。
我确信所需的文件在JAR存档中。问题是,当我双击打开JAR文件时,它会运行,但它不会在浏览器中运行。
我在这个问题上花了整整一天时间。任何帮助都是非常感谢的!
发布于 2015-03-11 10:44:33
我自己解决了这个问题。根本原因是我没有正确地在罐子上签名。
Java getResource()使用反射,如果没有有效的证书,反射将无法正确执行。在这种情况下,一个自签名的罐子就可以了。
感谢上面的每一个输入。
https://stackoverflow.com/questions/28945319
复制相似问题