姬長信(Redy)

java – 从外部模块访问资源文件


到目前为止,非模块化的java,你只需将文件放在src / main / java / resources中,确保它在classpath中,然后加载它
file = getClass().getClassLoader().getResourceAsStream("myfilename"); 

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

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

我的项目设置如下:

module playground.api {
    requires java.base;
    requires java.logging;
    requires framework.core;
}

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

项目运行

java -p target/classes:target/dependency -m framework.core/com.framework.Main

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

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

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