18

我有一个file.datsrc/main/resources.

当我尝试测试通过 jar 文件加载此文件的类时,测试失败,因为它无法在路径 ( I/O Exception) 中找到该文件。我通过测试得到的路径是:

/home/usr/workspace/project/target/test-classes/file.dat

但该文件不存在target/test-classes任何想法?

4

2 回答 2

25

src/main/resources在主程序运行期间,来自的文件将在类路径上可用,而在测试运行期间,来自和src/main/resourcessrc/test/resources将在类路径上可用的文件。

检索驻留在类路径上的文件的一种方法是:

Object content = Thread.currentThread().getContextClassLoader().getResource("file.dat").getContent();

.. 的类型content取决于文件内容。您还可以将文件作为 InputStream 获取:

InputStream contentStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.dat");
于 2013-09-18T15:14:59.073 回答
4

如果文件在

src/main/resources/file.dat

您可以获取文件的 URL:

getClass().getResource("/file.dat");

于 2013-09-18T15:11:00.757 回答