我使用Freemarker模板编写了一个java程序,但它显示了已弃用的错误。我无法理解

时间:2017-10-05 12:01:31

标签: java freemarker

Date

import java.io.*;
import java.util.*;
import freemarker.template.*;

public class HelloFreemarker {

    public static void main(String[] args)  
            throws IOException, TemplateException {
        Configuration cfg = new Configuration();
        cfg.setObjectWrapper(new DefaultObjectWrapper());
        cfg.setDirectoryForTemplateLoading(new File("."));
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("name", "World");
        Template template = cfg.getTemplate("hello.ftl");
        template.process(model, 
        new OutputStreamWriter(System.out));
    }
}

我使用freemarker模板编写了一个java程序。但是当我尝试编译/构建程序时它显示配置错误。消息显示配置已弃用。我正在使用jdk 8和jre 8并使用eclipse neon作为我的ide。请帮我执行程序

enter image description here

2 个答案:

答案 0 :(得分:1)

发生这种情况是因为从版本 2.3.21 开始弃用了 Configuration()构造函数。
使用新的参数化构造函数 Configuration(Version)实例化Configuration对象。

根据freemarker API文档,版本是一个类,用于指定您要应用哪个Freemarker版本最多不兼容100%向后兼容的修补程序。

例如:假设我正在使用 freemarker-2.3.28.jar ,并希望启用其所有向后兼容的错误修正/改进,然后按如下所示创建Configuration对象

配置cofig =新配置(Configuration.VERSION_2_3_28);

可以here检查所有的freemarker API版本。希望这会有所帮助:)

答案 1 :(得分:0)

这可能是因为您在创建配置管理器时未指定值。我在Apache's website上找到了一个例子:

  

配置cfg =新配置( Configuration.VERSION_2_3_25 );

显然,当留空时会选择默认值。该默认值然后调用一个depracated函数。

您应该弄清楚要使用的配置版本;可能是最新稳定的。