我在传统的tomcat服务器中运行本地代码,而在部署到Kubernetes时,我的读取资源文件代码不起作用。
我把nas.txt
放在资源文件夹中。
和
File file = ResourceUtils.getFile("classpath:nas.txt");
//Read File Content
String content = new String(Files.readAllBytes(file.toPath()));
return content;
这给出了"Internal exception has occurred"
错误
该文件是否存在于tomcat中 - ->webapps -->app°war--容器内>资源
ResourceUtils.getFile
不适用于包装好的罐子。虽然它适用于 IDE。您可以尝试以下替代
protected InputStreamReader readStream(String filePath) throws FileNotFoundException {
InputStreamReader streamReader;
if (filePath.startsWith("classpath:")) {
streamReader = new InputStreamReader(getClass().getResourceAsStream(File.separator + filePath.split("classpath:/*")[1]));
} else {
streamReader = new FileReader(ResourceUtils.getFile(filePath));
}
return streamReader;
}
假设你的文件在resources
目录中
URL img1Url = org.apache.cxf.common.classloader.ClassLoaderUtils.getResource("/assets/bathroom.png", YourClass.class);
根据应用程序,使用 url 创建File
对象或InputStreamReader
。
库导入:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-common-utilities</artifactId>
<version>2.5.11</version>
</dependency>
上述部分也适用于 kubernetes 镜像和常规实例。