Velocity框架资源未找到异常

时间:2012-01-05 03:16:33

标签: java

我正在尝试在Java 1.6中运行速度电子邮件发件人程序,但它找不到追索权......

    VelocityContext context = new VelocityContext();
    context.put("name", "mike");

    // Initialize the engine
    try {
    VelocityEngine ve = new VelocityEngine();
    templateName = "myfile_en.vm";

    // Load the template
    Template template = ve.getTemplate(templateName, "UTF-8");

    // Render the template into a writer
    StringWriter writer = new StringWriter();
    template.merge(context, writer);

Cam任何人帮我解释为什么我无法加载myfile_en.vm ???我尝试给出完整的绝对路径,但仍然是同样的错误:ResourceNotFound

我是直接从eclipse运行的。非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:4)

这实际上取决于模板文件的位置。速度总是有问题。要绕过它,您需要确保模板可以在类路径中找到。无论是在jar中还是直接在文件系统上。一旦它在你的类路径上,就像这样初始化速度......

private static void initVelocity() throws Exception {
    java.util.Properties p = new java.util.Properties();
    p.setProperty("resource.loader", "class");
    p.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
    Velocity.init(p);
}

这告诉Velocity在类路径中查找模板文件。

答案 1 :(得分:0)

仅将路径更改为bean

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
      <property name="velocityProperties">
        <props>
          <prop key="resource.loader">class</prop>
          <prop key="class.resource.loader.class">
            org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
          </prop>
        </props>
      </property>
    </bean>