【发布时间】:2018-07-23 22:41:31
【问题描述】:
我在 Eclipse 中有一个 gradle 项目。这是我的项目的结构
我在 scr/main/resources/css 中有 css 资源 styleclass.css。首先,我尝试使用
scene.getStylesheets().add("css/styleclass.css");
但是我收到了警告 resource not found. 我也通过删除 module-info.java 文件进行了尝试。但结果是一样的。
然后我用
试了一下String urlString = ComboBoxStyling.class.getClassLoader().getResource("css/styleclass.css").toExternalForm();
问题是,如果我删除 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;
}
感谢和问候
巴斯特·马哈茂德·艾哈迈德
【问题讨论】:
-
资源已被封装,因此无法通过 ClassLoader API 找到。我假设 ComboBoxStyling.class..getResource("/css/styleclass.css") 将起作用 - 请注意前导斜杠,以便相对于模块的根位置找到它,而不是相对于 ComboBoxStyling.class 在这种情况下。
-
是的,这是工作:)
-
@Alan Bateman 发表您的答案,以便我接受
标签: java javafx classloader java-9