Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven项目中资源文件的路径是什么?_Java_Maven 2 - Fatal编程技术网

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

Java Maven项目中资源文件的路径是什么?,java,maven-2,Java,Maven 2,在我的Maven项目中,我在main方法中有以下代码: FileInputStream in = new FileInputStream("database.properties"); 但总是得到一个找不到文件的错误 我已经将该文件放在src/main/resources中,并将其正确复制到target/classes目录(我相信这是Maven resources的预期行为),但在实际运行该程序时,它似乎永远找不到该文件。我尝试过其他各种途径: FileInputStream in = new

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

FileInputStream in = new FileInputStream("database.properties");
但总是得到一个找不到文件的错误

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

FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");
但似乎什么都不管用

那么正确的路径是什么呢


根据下面“否认”的回答,我需要的是:

InputStream in = TestDB.class.getResourceAsStream("/database.properties")
其中
TestDB
是类的名称


谢谢你的帮助,迪森

您不能像那样直接加载文件,您需要使用资源抽象(资源不仅可以在文件系统中,而且可以在类路径上的任何位置—在jar文件中或其他地方)。这种抽象是加载资源时需要使用的。资源路径与类文件的位置相关,因此需要在前面加一个斜杠才能到达“根”:

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

如果试图从静态方法访问该文件,则getClass()不起作用。在这种情况下还有其他选择吗?请使用类名,例如Main.class.getResourceAsStream()。您可以使用任何类或类加载器,因此hread.getContextClassLoader().getResourceAsStream()也可以工作。