相关疑难解决方法(0)

从外部模块访问资源文件

到目前为止,直到非模块化的java,你只需要放入一个文件,src/main/java/resources确保它在classpath中,然后加载它

file = getClass().getClassLoader().getResourceAsStream("myfilename"); 
Run Code Online (Sandbox Code Playgroud)

来自类路径中的任何位置.

现在有了模块,情节变浓了.

我的项目设置如下:

module playground.api {
    requires java.base;
    requires java.logging;
    requires framework.core;
}
Run Code Online (Sandbox Code Playgroud)

配置文件放在里面src/main/resources/config.yml.

项目运行

java -p target/classes:target/dependency -m framework.core/com.framework.Main
Run Code Online (Sandbox Code Playgroud)

由于主类不在我自己的项目中,而是在外部框架模块中,因此无法看到config.yml.现在的问题是,有没有办法以某种方式将我的配置文件放入模块或打开它?我是否必须更改框架上游加载文件的方式?

我尝试在module-info中使用"exports"或"opens",但它想要一个包名,而不是文件夹名.

如何以最佳实用的方式实现这一点,以便它可以像Java 8一样工作,并尽可能少地进行更改?

java java-platform-module-system java-9

16
推荐指数
2
解决办法
5946
查看次数

列出应用程序启动期间解析的模块

如何在启动应用程序时了解已解析的模块列表,以便确定从根模块可以访问的所有服务提供程序.

java java-9 java-module module-info

5
推荐指数
1
解决办法
848
查看次数

资源文件夹中的 JavaFX 图像

出于某种原因,我一直在 gradle javafx 项目中获得 NPE。

我的文件夹结构非常基本。我的main/java文件夹中有一个包含我的 java 文件的包。我的main/resources文件夹中也有我的资源。当我尝试加载image.png它时,它给了我一个 NPE。

public static Image createImage(Object context, String url) {
    Image m = null;
    InputStream str = null;
    URL _url = context.getClass().getResource(url);

    try {
        m = new Image(_url.getPath());
    } catch (NullPointerException e) {
        e.printStackTrace();
    }

    return m;
}
Run Code Online (Sandbox Code Playgroud)

这是一个辅助类。

SceneI 调用:Image image = Helper.createImage(this, "image.png"); 图像的绝对路径将是main/resources/images/image.png.

我检查了互联网上的每个教程,但找不到任何解决方案。我还尝试将图像路径作为参数,也尝试使用 ,InputStream但它从未奏效。

java javafx

3
推荐指数
1
解决办法
1768
查看次数