org.apache.velocity.exception.ResourceNotFoundException的解决方案

最近在学习Velocity,用到了VelocityEngine这个类,调用其getTemplate方法时,里面的路径设置一直有问题
VelocityEngine ve = new VelocityEngine();
ve.init();
Template t = ve.getTemplate(fileName);
实验多次后发现上面的fileName必须是直接位于项目目录下的路径,直接写绝对路径都不行
例如:
template = ve.getTemplate("welcome.vm");
welcome.vm放到你的项目根目录,也就是x:/tomcat/webapps/yourProject/welcome.vm

如果是:

template = ve.getTemplate("abc/welcome.vm");
welcome.vm放到你的项目的位置是x:/tomcat/webapps/yourProject/abc/welcome.vm

但是这样一来,有些人的本地开发和服务器测试时,模板文件的位置就不太一样,就会出现路径不对而throw出org.apache.velocity.exception.ResourceNotFoundException异常
后来又实验了半天,终于发现以下方法可以解决问题,可以用绝对路径来配置,我这里是动态获取路径
我的模板文件是放在资源目录的 "template" 目录下,但把项目发布到solaris系统的websphere上路径就很乱了,所以动态获取路径可以解决
String fileDir = 我的类名.class.getResource("/template").getPath();
VelocityEngine ve = new VelocityEngine();
Properties properties = new Properties();
properties.setProperty(ve.FILE_RESOURCE_LOADER_PATH, fileDir); //此处的fileDir可以直接用绝对路径来
//指定,如"D:/template",但记住只要指定到文件夹就行了
ve.init(properties); //初始化
Template t = ve.getTemplate("welcome.vm");//此处只要指明文件名就可以了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值