шаблон загрузки ошибки freemarker

#java #freemarker

#java #freemarker

Вопрос:

Получая приведенное ниже исключение, у кого-нибудь есть решение для этого, также как показано в руководстве по mongodb, на самом деле это .ftl, здесь я предоставил HTML-файл, и я не могу создать.файл ftl

 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)
  

Комментарии:

1. попробуйте передать абсолютный путь для шаблона или отладки и проверить, какой путь вызывается

2. Теперь после прохождения абсолютного пути «C:UserstadooriM101Jsrcresourceshello.html » теперь в нем указано исключение java.io.FilenotFoudException: ресурс не существует

3. конфигурация.setClassForTemplateLoading(HelloworldFreemarkerStyle.class, «C:\Users\tadoori\M101J\src\resources\hello.html «);

4. прокомментируйте эту строку и попробуйте с первой попытки

5. хорошо, я прокомментировал и запустил его …. это приводит к следующему выводу java.io.FileNotFoundException: ресурсы не существуют.

Ответ №1:

Я попробовал этот код в своем тестовом проекте, созданном с помощью Idea2016 (freemarker v.2.3.23), и он работает идеально.

 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 находится в корневом каталоге проекта.

Комментарии:

1. Привет, спасибо за ответ, на самом деле это проблема с Windows 7, я думаю, потому что я попробовал в Windows 10, и это сработало