gpt4 book ai didi

java - 如何在 Java 9 中使用类加载器访问资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:48:07 24 4
gpt4 key购买 nike

我在 eclipse 中有一个 gradle 项目。这是我的项目结构

project structure

我在 scr/main/resources/css 中有 css 资源 styleclass.css。首先,我尝试使用

访问它
scene.getStylesheets().add("css/styleclass.css"); 

但我收到警告 未找到资源。 我还通过删除 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.getResource JavaDoc:

Resources in named modules are subject to the encapsulation rules specified by Module.getResourceAsStream. Additionally, and except for the special case where the resource has a name ending with ".class", this method will only find resources in packages of named modules when the package is opened unconditionally (even if the caller of this method is in the same module as the resource).

因此,要解决您的问题,您应该打开包 css:

module pk.training.basit {
exports pk.training.basit;
requires transitive javafx.controls;
opens css;
}

关于java - 如何在 Java 9 中使用类加载器访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com