A项目正常,打成jar后,Maven被B项目引用。
Freemarker配置:
<!-- 配置freeMarker的模板路径 com.simple.tag.FreeMarkerViewConfig --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerSettings" ref="freemarkerConfiguration" /> <property name="templateLoaderPath"> <value>classpath:/templates/</value> </property> <property name="freemarkerVariables"> <map> <entry key="xml_escape" value-ref="fmXmlEscape" /> </map> </property> <property name="defaultEncoding"> <value>utf-8</value> </property> </bean>项目启动时报错:
17:45:29.204 [localhost-startStop-1] DEBUG o.s.w.s.v.f.FreeMarkerConfigurer - Cannot resolve template loader path [classpath*:/templates/] to [java.io.File]: using SpringTemplateLoader as fallback
java.io.FileNotFoundException: D:\Workspaces2\.metadata\.me_tcat7\webapps\community\classpath*:\templates does not exist.
at freemarker.cache.FileTemplateLoader$1.run(FileTemplateLoader.java:125) ~[freemarker-2.3.19.jar:2.3.19]
Freemarker是否无法读取jar中的模板?
或者有比的变通方法?求教
模板路径不对######jar中的配置文件可以读取到没有问题,是Freemarker读取不到jar中的模板######回复 @程序员V : 如果是在jar里面就直接写 classpath*:applicationContext-*.xml 类似的看看######对的,不打成jar包可以访问######
也遇到了这个问题,求指教,,,
######对freemarker没深入研究过,但是看异常日志就知道问题原因了。jar中的文件不能以File的形式读取,只能以流的形式读取。如果用File读取就会报文件不存在的异常。看下TemplateLoader的实现类,可以换成SpringTemplateLoader,这个模版加载器是用流的形式读取模版######恰好,使用springboot+freemarker时,打项目打成jar包后,遇到这个问题。
网上找了好久,一直没有找到合适的答案。后来,自己阅读了下出错部分源代码,终于整明白了。
系统默认是优先加载文件系统的模板引擎,不过有这个异常,也并不影响使用,只是日志中会多个异常,有点强迫症的,心里难过。
spring.freemarker.prefer-file-system-access = false 给你参考我的:
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss #时间格式化
time-zone: Asia/Chongqing #时区设置
##############################
# 以下是配置不同的模板引擎
##############################
# Default Extensions are:
# *.html - Thymeleaf
# *.tpl - Groovy
# *.ftl - Freemarker
# *.vm - Velocity
freemarker:
cache: false
template-loader-path: ["classpath:/webapp/"]
prefer-file-system-access: false #不使用文件系统优先,而使用classpath下的资源文件优先,解决打jar包运行后,出现的异常问题
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。