一开始我的代码是这样子的,读取本地子路径下的json文件
代码运行的时候,在window是可以正常的
@Override
public String getBannerStr() {
String str = "";
try {
Resource resource = new ClassPathResource("json/abc.json");
File file = resource.getFile();
str = FileUtils.readFileToString(file, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException("Json信息查询出错");
}
return str;
}
但是实际上,工程是在Linux上面部署为jar包的
上面访问方式就出错了,这边一开始以为是获取资源文件的方式出问题了
后来试了几次,发现问题不是这样.
最后百度发现,在Linux中无法直接访问未经解压的文件,所以就会找不到文件。
所以只能使用流的方式对静态资源进行读取
下面是最后修改的代码
@Override
public String getBannerStr() {
String str = "";
try {
InputStream stream = getClass().getClassLoader().getResourceAsStream("json/abc.json");
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String s = "";
try {
while ((s = br.readLine()) != null) {
str = str + s;
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException("Json信息查询出错");
}
return str;
}