2012-01-05 41 views
0

我試圖用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); 

凸輪的任何一個幫助我,爲什麼我不能加載myfile_en.vm?我試着給完整的絕對路徑,但仍然是相同的錯誤:ResourceNotFound

我直接從eclipse運行它。任何幫助深表感謝。

謝謝!

+0

哪裏的文件在什麼位置?什麼是運行配置的起始目錄? – 2012-01-05 04:25:44

回答

4

這實際上取決於你的模板文件在哪裏。 Velocity始終存在問題。爲了解決它,你需要確保模板可以在類路徑中定位。直接在jar或文件系統中。一旦它在你的類路徑上,init Velocity像這樣...

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在類路徑中尋找模板文件。

+0

你能告訴我在哪裏添加這個initVelocity()方法嗎?我是否需要將其添加到相同的主程序中?它將如何被調用?感謝你的幫助! – Mike 2012-01-06 01:57:56

+0

在使用速度模板之前,您需要從主要方法調用它。在一個servlet容器中,把它放在啓動servlet中 - 它啓動時由servlet容器調用的那個servlet容器 – sethu 2012-01-06 02:36:54

+0

我正在使用一個獨立的java程序....你能告訴我應該在哪裏調用這個&how它會被調用? – Mike 2012-01-09 07:18:00

0

只有改變路徑成豆

<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>