在我的Maven项目中,我在main方法中有以下代码:
FileInputStream in = new FileInputStream("database.properties");
Run Code Online (Sandbox Code Playgroud)
但总是得到一个文件未找到错误.
我已将文件放在src/main/resources中,并将其正确复制到target/classes目录(我相信这是Maven资源的预期行为),但在实际运行程序时,它似乎永远无法找到该文件.我尝试了其他各种途径:
FileInputStream in = new FileInputStream("./database.properties");
FileInputStream in = new FileInputStream("resources/database.properties");
Run Code Online (Sandbox Code Playgroud)
等似乎没什么用.
那么正确的使用途径是什么?
根据下面的"disown's"答案,我需要的是:
InputStream in = TestDB.class.getResourceAsStream("/database.properties")
Run Code Online (Sandbox Code Playgroud)
哪个TestDB是类的名称.
谢谢你的帮助,谢绝!
Ale*_*ing 56
您无法直接加载文件,您需要使用资源抽象(资源不仅可以在文件系统中,而且可以在类路径的任何位置 - 在jar文件中或其他方式).这种抽象是加载资源时需要使用的.资源路径是相对于类文件的位置的,因此您需要预先设置斜杠以获取"root":
InputStream in = getClass().getResourceAsStream("/database.properties");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38408 次 |
| 最近记录: |