【发布时间】:2012-01-26 01:48:12
【问题描述】:
我正在使用速度模板引擎为 OSGi 开发应用程序。 它非常适合通过文件加载器加载我的模板,但现在我必须在我的 jar 中实现这个模板并将其作为资源加载。
我怎样才能让它工作?
我的代码:
ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
ve.setProperty("classpath.resource.loader.class",
ClasspathResourceLoader.class.getName());
ve.setProperty("classpath.resource.loader.path", "/velocitytemplates");
ve.init();
ve.getTemplate("foo.vm");
这会抛出一个异常
找不到资源“index.vm”
原因:
org.apache.velocity.exception.ResourceNotFoundException:找不到资源“index.vm”
【问题讨论】:
-
如果资源在你的包中,那么 Velocity 需要使用你的包的类加载器来加载它们。 Velocity 很可能正在使用其 自己的 类加载器,因此无法看到您的包中的资源。你需要找到一种方法来配置
ClasspathResourceLoader来告诉它使用哪个类加载器,否则你需要使用其他类型的资源加载策略。不幸的是,我对 Velocity 的了解不够,无法提供更具体的建议。