当前位置: 首页 > 知识库问答 >
问题:

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

姜志行
2023-03-14

我在Eclipse中有一个gradle项目。下面是我的项目的结构

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

scene.getStylesheets().add("css/styleclass.css"); 

但是我收到警告资源找不到。我也尝试删除模块-info.java文件。但结果是一样的。

String urlString = ComboBoxStyling.class.getClassLoader().getResource("css/styleclass.css").toExternalForm();
module pk.training.basit {
    exports pk.training.basit;
    requires transitive javafx.controls;
}

感谢和问候

巴西特·马哈茂德·艾哈迈德

共有1个答案

羊城
2023-03-14

来自classloader.getresourceJavadoc:

命名模块中的资源服从Module.GetResourceAsStream指定的封装规则。此外,除了资源名称以“.class”结尾的特殊情况外,此方法将仅在无条件打开包时(即使此方法的调用者与资源在同一模块中)在命名模块的包中查找资源。

因此,要解决这个问题,应该打开包CSS:

module pk.training.basit {
    exports pk.training.basit;
    requires transitive javafx.controls;
    opens css;
}
 类似资料:
  • 我有个测试: 当我删除子句并添加一个包含的依赖项(作为库)时,它可以工作: 当我添加它们时(中的Maven依赖项和),IDEA中的编译失败,出现以下消息: 但是Maven build仍然成功! 测试项目可在https://github.com/rpuch/test-resource-jdk9获得

  • 我的背景: 9-ea-113(这是javafx现在完全模块化,没有jfrt.jar) eclipse-neon-M6与当前的测试版支持java9(运行在java8上,如果这很重要) win7 简单地说 没有编译,因为javafx。找不到xx个包。 要怎么做?

  • 问题内容: 使用Jasper,我可以使用资源来加载报告。因此,要加载主报告,我使用类似以下内容的内容: 但是,如果report1.jrxml中有一个子报表,怎么说在 /resources/sub.jrxml中 呢? 问题答案: 我这样做是这样的: “ SubReportParam”将是“ JasperReport”类型的参数,作为您报表中的SubreportExpression。 在.jrxml中

  • 我想访问此网页:https://www.google.com/trends/explore#q=ice在中心线图中筛选并提取数据。html文件是(在这里,我只粘贴我使用的部分): 并且我使用的数据存储在脚本部分(最后一行)。我的想法是先获取类“报告-内容”,然后选择脚本。我的代码如下: 打印“中心”类时,可以得到除“报表内容”之外的所有子类内容,打印“报表内容”时,结果只有: 我也尝试这样做: 但

  • 我对Weblogic类加载器有问题。 当我尝试在WL 12.2.1.2.0上部署我的应用程序时,它失败了。在我服务器上的日志中,我看到了 该类属于xml API库。库进入我的应用程序时带有另一个依赖项(即传递依赖项)。xml API的版本是1.4.01。 之后,我在部署描述符中添加了异常: 然后是一个新的部署。所述问题与组织有关。w3c。dom。元素遍历已解决。没有关于缺少组织的任何信息。w3c。

  • 我们的应用程序是一个中间层应用程序,它提供了十几个左右的前端应用程序,可以访问后端的几十个数据库(和其他数据源)。 我们决定使用OSGi将不相关的代码位分离到单独的包中。这确保了正确的代码封装,甚至允许特定捆绑包的热交换。 这样做的一个优点是,与特定数据库对话的任何代码都被隔离到单个捆绑包中。它还允许我们简单地为新的目的地插入新的捆绑包,并无缝地集成新代码。它还确保了如果单个后端数据源关闭,对其他