springboot集成freemarker模板,项目打成jar包到生产环境显示找不到模板文件
一、问题描述
1、使用springboot集成freemarker模版后,在本地运行正常;打成jar包后到线上测试报如下错误:
2、原因:打成jar后freemarker无法使用类加载器获取jar包中的resourse目录下的templates文件
java.io.FileNotFoundException: file:/home/user/springboot.jar!/BOOT-INF/classes!/templates does not exist.
二、原始代码
本人出错的代码大概如下所示:这块代码主要是testTemplate()方法中configuration通过模板名获取模板对象而服务,所以报错也是这行代码导致线上报错。(为了简洁此块代码已做删减,保留核心部位)
public class WordUtil {
//配置信息,代码本身写的还是很可读的,就不过多注解了
private static Configuration configuration = null;
// 这里注意的是利用WordUtils的类加载器动态获得模板文件的位置
private static final String templateFolder = WordUtil.class.getResource("/templates").getPath();
static {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
try {
System.out.println(templateFolder);
configuration.setDirectoryForTemplateLoading(new File(templateFolder));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void testTemplate() throws IOException {
Template freemarkerTemplate = configuration.getTemplate("word.ftl");
}
}
三、解决方案
1、前言:在网上寻找很多的方法,比如修改api,更改某些代码的设置等等都没有解决问题。
2、解决方案:注入FreeMarkerConfigurer配置类,因为freemarker模板的默认目录就在resourse下的templates目录下,使用freeMarkerConfigurer.getConfiguration().getTemplate(“word.ftl”)可直接获取到对应的模板文件
@Autowired
FreeMarkerConfigurer freeMarkerConfigurer;
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("word.ftl");
ps:原始代码块最后也只是获取到模板Template对象,所以使用此方法也可以实现并能成功解决bug。
四、注意点
ps:因为本人此地方是工具类,没有让spring来进行管理,所以不能在工具类中直接注入FreeMarkerConfigurer对象;所以可以注入到controller或者service类中,然后controller或者service类在调用工具类方法的时候通过实参传递过来。如工具类testTemplate()方法的参数
public static void testTemplate(FreeMarkerConfigurer freeMarkerConfigurer) throws IOException {
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("word.ftl");
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgjefcj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13