3
回答
Freemarker如何使用jar中的模板?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

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中的模板?

或者有比的变通方法?求教


举报
程序员Joe
发帖于2年前 3回/2K+阅

也遇到了这个问题,求指教,,,

--- 共有 1 条评论 ---
挽歌低吟对freemarker没深入研究过,但是看异常日志就知道问题原因了。jar中的文件不能以File的形式读取,只能以流的形式读取。如果用File读取就会报文件不存在的异常。看下TemplateLoader的实现类,可以换成SpringTemplateLoader,这个模版加载器是用流的形式读取模版 7个月前 回复

恰好,使用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包运行后,出现的异常问题


 

顶部