Exception in thread “main“ org.apache.velocity.exception.ResourceNotFoundException

Exception in thread “main” org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource ‘hellovelocity.vm’

我想相信第一次使用Velocity的时候,看了网上的很多资料,然后相关的文档整理后,就会发现,怎么都跑不通,然后在网上查找后,就会发现,他们提供的答案也是千篇一律,无法满足自己的需求,还是不知道怎么办。今天我就碰到了这样的问题,感觉看了网上的很多解释,都是很模糊,还是不知道怎么办。但是终于通过自己的努力把以上的问题解决了。现在把这个程序的完整结构,包括velocity的vm文件放置位置以及程序的代码全部给发大家分享,希望能够用最快的时候解决大家的问题,毕竟对程序员而言,时间就是金钱。

第一:为什出现以上的问题?

最简单的解释就是找不到具体的vm文件,所以这个vm文件的位置是非常关键的,必须放在velocity源码要求的位置,所以这是非常关键。
很多时候,我们就是直接把velocity的vm文件直接放在项目的目录中
所以我们觉得代码中就是直接写对应的vm文件。其实不是这样的,加载vim文件需要在已经编译好的class文件中找到对应的vm文件。
所以,首先我们放置的vm文件的位置就是错误的。那应该放在那里呢?

第二步:认真看代码

我这方的是正确的代码,大家直接复制就可以了,我会通过这段代码给大家介绍,怎么根据代码来放置对应的vm文件,进而程序能够读取vm文件,运行出争取结果。

	    VelocityEngine ve = new VelocityEngine();
	    String fileDir = HelloVelocity.class.getResource("/template").getPath();
	    //HelloVelocity 这个是本程序的类名
	    ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
	    System.out.println(fileDir);
	    Properties properties = new Properties();
	    properties.setProperty(ve.FILE_RESOURCE_LOADER_PATH,fileDir);
	    ve.init(properties);
	    System.out.println("测试:hello world");
	    // 获取模板文件
	    Template t = ve.getTemplate("velocity.vm");
	    // 设置变量
	    VelocityContext ctx = new VelocityContext();
	    ctx.put("name", "Velocity");
	    List list = new ArrayList();
	    list.add("1");
	    list.add("2");
	    ctx.put("list", list);
	    // 输出
	    StringWriter sw = new StringWriter();
	    t.merge(ctx,sw);
	    System.out.println(sw.toString());

通过上面的代码我们可以发现,
HelloVelocity.class.getResource("/template").getPath()
这个句话的意思就是从类对应的class文件中找到对应目录的路径名称,这里不要太过于把什么绝对路径和相对路径区分的过于清楚,只需要知道,是得到class文件中的某个目录的路径就可以了。
所说义这句话的就我们一个重要的提示,那就是我们需要把对应的template目录新建在对应的类编译后的class目录中。

第三步:怎么查找类编译后形成的目录

这个就是Java的基础知识,我们知道类在编译之后,是放在对应的bin中的,所以我们就需要找到我们程序存放的位置,然后在找到本程序的bin目录,然后在里边新建一个template,在里边放入具体的vm文件,这样才可以,具体如下图所示:
template的位置
在template中放入velocity文件

第四步:最后运行程序,得到结果

最后的结果
在本程序中,核心就是将template和vm文件的存放位置,所以,这才是核心,大家一定要记着,式存储在类编译后的bin文件中的。

jar包下载链接

最后velocity的jar包也是一个核心问题,很多同学都不知道怎么找,虽然给了官网,但是里边还是很多内容,不知道怎么找,这里把下载的直接网址给大家,减少大家寻找jar包的时间。
http://archive.apache.org/dist/velocity/engine/1.7/
下载这个就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值