我的 JavaFX 应用程序需要能够找到 FXML 文件以加载它们FXMLLoader,以及样式表(CSS 文件)和图像。当我尝试加载这些时,我经常遇到错误,或者我尝试加载的项目在运行时根本没有加载。
对于 FXML 文件,我看到的错误消息包括
Caused by: java.lang.NullPointerException: location is not set
Run Code Online (Sandbox Code Playgroud)
对于图像,堆栈跟踪包括
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
Run Code Online (Sandbox Code Playgroud)
如何找出这些资源的正确资源路径?
我目前正在使用普通的java项目(gradle项目),并希望将其转换为JavaFx项目,而无需将现有源重新导入到新的Javafx项目中.有没有办法实现这个目标?
我在 Eclipse 中有一个 gradle 项目。这是我的项目的结构
我在 .cssstyleclass.css中有 css 资源scr/main/resources/css。首先我尝试使用访问它
scene.getStylesheets().add("css/styleclass.css");
Run Code Online (Sandbox Code Playgroud)
但是我收到警告resource not found.我也通过删除module-info.java文件来尝试它。但结果是一样的。
然后我尝试使用
String urlString = ComboBoxStyling.class.getClassLoader().getResource("css/styleclass.css").toExternalForm();
Run Code Online (Sandbox Code Playgroud)
问题是,如果我删除moduele-info.java并应用样式表,这条线会起作用。但是随着module-info.java我收到空指针异常。
我知道的不多,但至少我知道类加载器在 Java 9 中有变化。那么我如何在 Java 9 中做同样的事情。我的module-info.java文件包含以下内容
module pk.training.basit {
exports pk.training.basit;
requires transitive javafx.controls;
}
Run Code Online (Sandbox Code Playgroud)
感谢和问候
巴斯特·马哈茂德·艾哈迈德