当项目是 .jar 或 IDE 时,如何动态访问 src/main/resources 中的文件

How can i access files in src/main/resources dynamically when the project is a .jar or in IDE

我有一个项目使用在 src/main/resources*/input* 中找到的文件并在 src/main/resources*/output* 中生成文件。

我经常用

System.getProperty("user.dir") + "/src/main/resources"

我的问题是它不是动态的。当我使用我的 IDE 时它工作正常,但是当我将我的项目构建为 .jar 文件时,我最终不得不将 src/main/resources 添加到 jar 所在的根目录.....可能是坏的。

我试过使用以下 returns 空指针异常

this.getClass().getResource("input").getPath().toString()

有人可以为我提供一种动态方式来访问我需要的这些目录,这些目录位于 src/main/resources 中,可以从 IDE 和.jar?

您可以使用以下资源文件夹访问文件:

this.getClass().getResourceAsStream("/NLP/models/en-lemmatizer.bin").toString();

NLP是resource里面的一个文件夹,里面有一个models文件夹,里面有bin文件。

据我所知,您不能在 jar 中生成文件或创建新文件。