Freemarker如何使用jar中的模板?

发布于 2021-12-02 14:55:35 字数 1343 浏览 1037 评论 8

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

坐在坟头思考人生 2021-12-05 07:20:54

解决了我的问题, 我的是spring 4.X <property name="preferFileSystemAccess" value="false"/>

坐在坟头思考人生 2021-12-05 07:17:15

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

 

绝情姑娘 2021-12-05 07:13:47

对freemarker没深入研究过,但是看异常日志就知道问题原因了。jar中的文件不能以File的形式读取,只能以流的形式读取。如果用File读取就会报文件不存在的异常。看下TemplateLoader的实现类,可以换成SpringTemplateLoader,这个模版加载器是用流的形式读取模版

卸妝后依然美 2021-12-05 07:05:50

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

最偏执的依靠 2021-12-05 06:43:27

对的,不打成jar包可以访问

梦中楼上月下 2021-12-05 04:06:42

回复
如果是在jar里面就直接写 classpath*:applicationContext-*.xml 类似的看看

风透绣罗衣 2021-12-05 02:32:56

jar中的配置文件可以读取到没有问题,是Freemarker读取不到jar中的模板

初见你 2021-12-03 23:44:07

模板路径不对

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文