无法从sts中的src/test/resources读取资源文件

lawou6xi  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(642)

我创建了文件夹 src/test/resources/ 在根项目目录中,我在jsons文件夹中添加了一个文件 jsons/server_request.json .
现在我试图通过调用commontestutilityclass中的静态函数来读取此文件,该函数如下所示:

public class CommonTestUtility {

    public static String getFileAsString(String fileName) throws IOException {
        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
        File file = new File(classLoader.getResource(fileName).getFile());
        String content = new String(Files.readAllBytes(file.toPath()));
        return content;
    }
}

现在调用这个函数

class ServerTest {
@Test
void test_loadResource() {
    String content = CommonTestUtility.getFileAsString("jsons/server_request.json");
}

}

,它给我的错误是:

CommonTestUtility - Cannot invoke "java.net.URL.getFile()" because the return value of "java.lang.ClassLoader.getResource(String)" is null.

我试着把 src/test/resources/ 在junit servertest.java的运行配置中,仍然找不到资源如何解决这个问题?

5jvtdoz2

5jvtdoz21#

我重新创建了与您描述的场景相同的场景,您的代码也适用于我。你能再检查一下你的项目下面和我的一样吗?如果是这样的话,我想可能是你的环境造成的。

qkf9rpyu

qkf9rpyu2#

https://mkyong.com/java/java-read-a-file-from-resources-folder/
上面的链接可能会有所帮助。getresource()方法返回需要将.getfile()函数更改为的uri。touri()。简单代码
私有文件getfilefromresource(字符串文件名)引发urisyntaxexception{

ClassLoader classLoader = getClass().getClassLoader();
    URL resource = classLoader.getResource(fileName);
    if (resource == null) {
        throw new IllegalArgumentException("file not found! " + fileName);
    } else {

        // failed if files have whitespaces or special characters
        //return new File(resource.getFile());

        return new File(resource.toURI());
    }

}

相关问题