Java Maven项目中资源文件的路径是什么?
在我的Maven项目中,我在main方法中有以下代码: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
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()也可以工作。