velocity unable to find resource ‘xxx.vm‘ in any resource loader
大家好,我是 程序员码递夫。
@[TOC]velocity unable to find resource ‘xxx.vm’ in any resource loader
1.问题
今天帮客户解决一个远古 java web系统的bug , 客户的系统用了非常古老的框架 jdk1.6+struc1.1+ velocity1.5 运行在tomcat6环境。 客户想迁移到 tomcat8 和 jdk1.8 环境, 但是运行代码报错 unable to find resource ‘xx.vm’ in any resource loader.
2.分析
根据报错提示, 是资源装载器不能找到 指定的模板文件。
该系统在tomcat6+jdk1.6下能正常运行, 换了tomcat8 + jdk1.8 则报错,初步估计是 环境参数引起的报错。 进一步进行velocity源码跟踪。
在 org.apache.velocity.runtime.resource.loader.FileResourceLoader 类中我们发现
3.修改相应环境参数
3.1修改velocity.properties
打开 velocity.properties 文件,找到 file.resource.loader.path 配置,加入项目vm模板的搜索路径
3.3确认tomcat的服务器定位为 Use Tomcat Installation
3.2修改tomcat的工作参数
eclipse 默认的 tomcat 工作目录是 eclipse的安装目录, 这会造成 模板文件找不到。 修改相应的参数。
4.总结
修改了以上参数后, 系统在新环境正确运行。
那么 velocity 提示不能找到模板资源文件,可以检查以下两个地方,是否设置正确
- velocity.properties 的 file.resource.loader.path
- eclipse 的 tomcat 工作目录