Maven 项目中资源文件的路径是什么?

2022-09-01 05:15:46

在我的 Maven 项目中,main 方法中包含以下代码:

FileInputStream in = new FileInputStream("database.properties");

但总是得到一个文件找不到错误。

我已经将文件放在src / main / resources中,并且它被正确复制到target/classes目录中(我相信这是Maven资源的预期行为),但是当实际运行程序时,它似乎永远找不到该文件。我尝试过各种其他途径:

FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");

等等,但似乎没有什么用。

那么,正确的使用路径是什么呢?


根据下面的“disown's”答案,这就是我需要的:

InputStream in = TestDB.class.getResourceAsStream("/database.properties")

其中 是类的名称。TestDB

感谢您的帮助,否认!


答案 1

你不能像那样直接加载文件,你需要使用资源抽象(资源不仅可以在文件系统中,还可以在类路径上的任何地方 - jar文件或其他)。此抽象是加载资源时需要使用的抽象。资源路径相对于类文件的位置,因此您需要在前面附加斜杠才能到达“root”:

InputStream in = getClass().getResourceAsStream("/database.properties");

答案 2

推荐