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

时间:2010-06-23 18:55:08

标签: java maven-2

在我的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 个答案:

答案 0 :(得分:56)

您无法直接加载文件,您需要使用资源抽象(资源不仅可以在文件系统中,而且可以在类路径的任何位置 - 在jar文件中或其他方式)。这种抽象是加载资源时需要使用的。资源路径是相对于类文件的位置的,因此您需要在斜杠前加上“root”:

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