Freemarker如何使用jar中的模板?
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_tcat7webappscommunityclasspath*:templates does not exist.
at freemarker.cache.FileTemplateLoader$1.run(FileTemplateLoader.java:125) ~[freemarker-2.3.19.jar:2.3.19]
Freemarker是否无法读取jar中的模板?
或者有比的变通方法?求教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
解决了我的问题, 我的是spring 4.X <property name="preferFileSystemAccess" value="false"/>
恰好,使用springboot+freemarker时,打项目打成jar包后,遇到这个问题。
网上找了好久,一直没有找到合适的答案。后来,自己阅读了下出错部分源代码,终于整明白了。
系统默认是优先加载文件系统的模板引擎,不过有这个异常,也并不影响使用,只是日志中会多个异常,有点强迫症的,心里难过。
spring.freemarker.prefer-file-system-access = false 给你参考我的:
对freemarker没深入研究过,但是看异常日志就知道问题原因了。jar中的文件不能以File的形式读取,只能以流的形式读取。如果用File读取就会报文件不存在的异常。看下TemplateLoader的实现类,可以换成SpringTemplateLoader,这个模版加载器是用流的形式读取模版
也遇到了这个问题,求指教,,,
对的,不打成jar包可以访问
回复
如果是在jar里面就直接写 classpath*:applicationContext-*.xml 类似的看看
jar中的配置文件可以读取到没有问题,是Freemarker读取不到jar中的模板
模板路径不对