java.io.FileNotFoundException:/opt/tool/tomcat/webapps/ROOT/WEB-INF/classes/template does not exist

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"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值