2012-06-20 122 views
0

我正在嘗試啓動並運行Apache Velocity。我的my.test.package包中有一個TestClass.class類。速度未找到模板

public class TestClass { 
    public static Template getTestTemplate() throws Exception { 
     Velocity.init(); 
     return Velocity.getTemplate("MyTestTemplate.vm"); 
    } 
} 

在同一個位置(my.test.package)我有MyTestTemplate.vm文件。

上面的代碼導致引發異常,說Unable to find resource 'MyTestTemplate.vm'。我不確定問題是什麼。 Velocity是否不在相同的包中查找文件? (注意:我最初在資源文件夾中有該文件,但爲了測試目的將其放在相同的文件夾下)。

回答

3

好的,想通了。

所以我想,也許Velocity正在看我的WEB-INF/classes文件夾。我在那裏看了一下才發現MyTestTemplate.vm文件不在那裏。原來,我需要更新我的Ant腳本,該腳本複製了資源以包含.vm文件。

<include name="**/*.vm"/> 

然後我需要更新我的配置,這樣速度就知道在classes文件夾的樣子。

VelocityEngine velocityEngine = new VelocityEngine(); 
velocityEngine.setProperty("resource.loader", "class"); 
velocityEngine.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 
velocityEngine.init(); 

然後,當你拿到模板,你只需要WEB-INF/classes部分後提供的路徑。

velocityEngine.getTemplate("path/to/resource/MyTestTemplate.vm"); 

我肯定有辦法讓模板過的文件路徑,但我不再關心;)

+0

感謝我這兩條線丟失: velocityEngine.setProperty(「resource.loader 「,」class「); velocityEngine.setProperty(「class.resource.loader.class」,「org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader」); – chrisr