无法从 STS 中的 src/test/resources 读取资源文件
Not able to read resource files from src/test/resources in STS
我在根项目目录中创建了文件夹 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.
I tried to include the src/test/resources/
in the run configuration
of Junit ServerTest.java, but still it's not able to find out the
resource
How to resolve this issue?
我重新创建了您描述的相同场景,您的代码对我有用。
你能仔细检查一下你的项目看起来像我下面的吗?如果是这样,我怀疑这可能与您的环境有关。
https://mkyong.com/java/java-read-a-file-from-resources-folder/
以上 link 可能会有帮助。
getResource() 方法 return 您需要更改的 URI
.getFile() 函数。到 URI()。
简单代码
私有文件 getFileFromResource(String fileName) 抛出 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());
}
}
我在根项目目录中创建了文件夹 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.
I tried to include the
src/test/resources/
in the run configuration of Junit ServerTest.java, but still it's not able to find out the resource How to resolve this issue?
我重新创建了您描述的相同场景,您的代码对我有用。 你能仔细检查一下你的项目看起来像我下面的吗?如果是这样,我怀疑这可能与您的环境有关。
https://mkyong.com/java/java-read-a-file-from-resources-folder/
以上 link 可能会有帮助。 getResource() 方法 return 您需要更改的 URI .getFile() 函数。到 URI()。 简单代码
私有文件 getFileFromResource(String fileName) 抛出 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());
}
}