java.io.FileNotFoundException: XXX/XXX does not exist
(未解决(最终使用的绝对路径-下下策),备忘使用。)
项目场景:
对应代码在windows环境下可以正常使用,而放到linux环境下就会出现此异常。问题描述:
提示io异常,根据异常释义可知是文件不存在。(未解决,备忘使用。)
下面展示主要的 获取方式的代码片
。
// 获取模板路径
String fileName = this.getClass().getClassLoader().getResource("application.properties").getPath();//获取文件路径
fileName = fileName.substring(1,fileName.lastIndexOf("/")+1);
// 生成option字符串
String option = FreemarkerUtils.generateString(ftlName, fileName+"/template", datas);
代码会在FreemarkerUtils.generateString(文件名,文件所处文件夹位置,数据)这个方法报出io异常。
具体情况是 linux异常提示如图:
解决方案:
具体代码块如下图:
我最终在代码中使用
(这里为什么放图片是因为这个冒号和斜杠会变成一个这样的"😕"表情)来作为判断是windows还是其他服务器的方式来进行进入不同的分支,
最终是选择下下策,先判断当前服务器是哪种,若是linux则使用绝对路径(写死的路径)。实乃下策
解决方案2.0:(猜测方法,未尝试。)
Windows下依旧使用这个方法:
// 获取模板路径
String fileName = this.getClass().getClassLoader().getResource("application.properties").getPath();//获取文件路径
fileName = fileName.substring(1,fileName.lastIndexOf("/")+1);
// 生成option字符串
String option = FreemarkerUtils.generateString(ftlName, fileName+"/template", datas);
而Linux下使用的话需要在 ftlName前面先拼接一个"/",具体代码就是 “/”+ftlName+"/template"