我在src/main/resources
有一个file.dat
。
当我尝试测试通过 jar 文件加载此文件的类时,测试失败,因为它无法在路径 ( I/O Exception
) 中找到该文件。我通过测试得到的路径是:
/home/usr/workspace/project/target/test-classes/file.dat
但是该文件不存在 target/test-classes
有什么想法吗?
在主程序运行时,来自 src/main/resources
的文件将在类路径上可用,而来自 src/main/resources
和 src/test/resources
的文件在测试运行期间将在类路径上可用。
检索驻留在类路径上的文件的一种方法是:
Object content = Thread.currentThread().getContextClassLoader().getResource("file.dat").getContent();
.. 其中content
的类型取决于文件内容。您还可以将文件作为输入流获取:
InputStream contentStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.dat");
如果文件在
src/main/resources/file.dat
您可以获取文件的 URL:
getClass().getResource("/file.dat");