需求:发送邮件,邮件内容通过Freemaker模板生成,如下代码:
Configuration configuration = new Configuration(Configuration.getVersion());
configuration.setDefaultEncoding("utf-8");
/** 加载模板目录 **/
//这个方法在IDEA跑是OK 的
File file = ResourceUtils.getFile("classpath:templates");//templates为模板目录
configuration.setDirectoryForTemplateLoading(file);
Template template = configuration.getTemplate("test.html");//test.html为要加载的模板
但部署到服务器,却提示:
java.io.FileNotFoundException:file:**.jar!/BOOT-INF/classes!/**.html
来回找原因,可以看到文件路径出现了奇怪的感叹号!
,这导致路径无法被正确匹配。
问题产生原因:当我们使用文件路径访问文件时,该路径下的文件必须是可访问的,而jar
文件本质是上是一个压缩文件,需要解压才能访问,所以程序会直接报错。
解决办法:采用类路径加载模板目录的方式。 Freemarker提供了3种加载模板目录的方法详见:Freemarker加载模板目录的方法-CSDN博客
configuration.setClassForTemplateLoading(this.getClass(), "/templates");
configuration.getTemplate("test.html"); //test.html为要装载的模板
标签:Freemarker,jar,路径,BOOT,html,test,configuration,模板,加载
From: https://blog.csdn.net/weixin_40501652/article/details/143718431