自学内容网 自学内容网

Freemarker模板 jar!/BOOT-INF/classes!/**.html

需求:发送邮件,邮件内容通过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为要装载的模板

原文地址:https://blog.csdn.net/weixin_40501652/article/details/143718431

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!