近期用java做了个小工具,用了velocity模板生成的方法,在eclipse上运行正常,但打成jar包后老是报错,如下:Template not found:org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'test.vm';始终不能解决,后搜素发现Velocity缺省提供了多种读取模板的方法,终于解决,代码如下:
public void velocityInfo(){
VelocityEngine ve = new VelocityEngine();
//可选值:"class"--从classpath中读取,"file"--从文件系统中读取
ve.setProperty("resource.loader", "class");
//如果从文件系统中读取模板,那么属性值为org.apache.velocity.runtime.resource.loader.FileResourceLoader
ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
ve.init();
Template t=ve.getTemplate("net/oschina/www/vm/test.vm");
VelocityContext context = new VelocityContext();
context.put("name", "test");
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
}
另外,Velocity缺省提供了多种读取模板的方法,列举如下,具体内容可以参考发布包中的Javadoc:
org.apache.velocity.runtime.resource.loader.JarResourceLoader
org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader
org.apache.velocity.runtime.resource.loader.URLResourceLoader
org.apache.velocity.runtime.resource.loader.StringResourceLoader