2016-10-20 71 views
0

,提示以下异常,没有任何人有这个 也解决方案,如图MongoDB的教程,它实际上.ftl,在这里我给HTML文件 和IM无法创建.ftl文件freemarker的错误装载模板

package com.mongodb; 

    import freemarker.template.Configuration; 
    import freemarker.template.Template; 

    import java.io.StringWriter; 
    import java.util.HashMap; 
    import java.util.Map; 

    /** 
    * Created by tadoori on 10/20/2016. 
    */ 
    public class HelloworldFreemarkerStyle { 

     public static void main(String[] args) { 
      Configuration configuration = new Configuration(); 
      configuration.setClassForTemplateLoading(HelloworldFreemarkerStyle.class, "/"); 

      try { 

       Template helloTemplate = configuration.getTemplate("hello.html"); 
       StringWriter writer = new StringWriter(); 
       Map<String, Object> helloMap = new HashMap<String, Object>(); 
       helloMap.put("name", "Freemark"); 

       helloTemplate.process(helloMap, writer); 

       System.out.println(writer); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

这下面是上运行的Java文件

java.io.FileNotFoundException: resources does not exist. 
    at freemarker.cache.FileTemplateLoader$1.run(FileTemplateLoader.java:125) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at freemarker.cache.FileTemplateLoader.<init>(FileTemplateLoader.java:122) 
    at freemarker.cache.FileTemplateLoader.<init>(FileTemplateLoader.java:108) 
    at com.mongodb.HelloworldFreemarkerStyle.main(HelloworldFreemarkerStyle.java:23) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
+0

尝试通过模板或调试的绝对路径,并检查什么路径被调用 –

+0

现在通过绝对路径“C:\ Users \ tadoori \ M101J \ src \ resources \ hello.html”现在它说java.io.FilenotFoudException:资源不存在 – user6238728

+0

configuration.setClassForTemplateLoading(HelloworldFreemarkerStyle.class,“C:\\ Users \\ tadoori \\ M101J \\ src \\ resources \\ hello.html”); – user6238728

回答

0

我试图在我的测试项目验证码蒙山Idea2016创建(freemarker的v.2.3.23)和工作perfecty。

import freemarker.template.Configuration; 
import freemarker.template.Template; 

import java.io.StringWriter; 
import java.util.HashMap; 
import java.util.Map; 

public class Main { 

    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
     Configuration configuration = new Configuration(); 

     try { 

      Template helloTemplate = configuration.getTemplate("hello.html"); 
      StringWriter writer = new StringWriter(); 
      Map<String, Object> helloMap = new HashMap<String, Object>(); 
      helloMap.put("name", "Freemark"); 

      helloTemplate.process(helloMap, writer); 

      System.out.println(writer); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

文件hello.html位于项目目录root。

+0

嗨,谢谢,事实上它的问题与Windows 7我猜,因为我试过在Windows 10中,它的工作 – user6238728