本地测试一切正常,发布之后就报错!
log打印需要访问的路径 opt/workspace/xxx/xxx/template/值班导入模版.xlsx
手动敲击命令也是正确的
但是程序就是报错 文件找不到
File not exist: opt/workspace/xxx/xxx/template/值班导入模版.xlsx
问题排查:
1,访问路径是我们认为的路径, 不是程序知道的路径
我们可以看看程序认为的文件夹下有什么文件
比如用直接用这个 :https://blog.csdn.net/w18756901575/article/details/70238234
/**
* 获取路径下的所有文件/文件夹
* @param directoryPath 需要遍历的文件夹路径
* @param isAddDirectory 是否将子文件夹的路径也添加到list集合中
* @return
*/
public static List<String> getAllFile(String directoryPath,boolean isAddDirectory) {
List<String> list = new ArrayList<String>();
File baseFile = new File(directoryPath);
if (baseFile.isFile() || !baseFile.exists()) {
return list;
}
File[] files = baseFile.listFiles();
for (File file : files) {
if (file.isDirectory()) {
if(isAddDirectory){
list.add(file.getAbsolutePath());
}
list.addAll(getAllFile(file.getAbsolutePath(),isAddDirectory));
} else {
list.add(file.getAbsolutePath());
}
}
return list;
}
2 中文通常牵扯到编码问题:
系统编码
程序编码
以及指定tomcat的编码
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8888
servlet:
context-path: /a_project
还有一个就是你配置文件放的地方,本地放哪了,部署的时候就放哪!
不然有可能读不到