Apache freemarker не будет импортировать с Gradle - PullRequest
0 голосов
/ 06 июня 2018

У меня есть веб-приложение на Java, для которого я использую cloud9, и я установил Apache freemarker в качестве движка шаблонов.Для импорта пакета я использовал gradle, но когда я запускаю gradle build, я получаю исключения из-за ссылок на пакет freemarker в моем коде.Когда я закомментирую все случаи использования freemarker, кроме оператора import, мой gradle создаст мой код, но при запуске выдает ошибки (пакет freemarker не существует).Как я могу это исправить?App.java

import freemarker.template.*;
import com.sun.net.httpserver.HttpServer;
import java.net.*;
import java.util.*;
public class App{
    public static Configuration cfg = new Configuration(Configuration.VERSION_2_3_27);
    int port;
    public static void main(String[] args){
        App app = new App(8081);
        try{
            app.init();
            app.templateConfig();
        }catch(Exception e){
            System.out.println(e);
        }
    }
    public App(int port){
        this.port = port;
    }
    public void init() throws Exception{
        HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
        System.out.println("server started at " + port);
        server.createContext("/", new HomeController.Index());
        server.createContext("/echoHeader", new HomeController.EchoHeaderHandler());
        server.createContext("/echoGet", new HomeController.EchoGetHandler());
        server.createContext("/echoPost", new HomeController.EchoPostHandler());
        server.setExecutor(null);
        server.start();
    }
    public void templateConfig() throws Exception{
        cfg.setDirectoryForTemplateLoading(new File("../templates"));
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHanlder.HTML_DEBUG_HANDLER);
        cfg.setLogTemplateExceptions(false);
        cfg.setWrapUncheckedExceptions(true);
    }
}

HomeController.java

import freemarker.template.*;
import com.sun.net.httpserver.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class HomeController{
    public static class Index implements HttpHandler{
        public void handle(HttpExchange exchange) throws IOException{
            //String response = "<h1>Server start success if you see this message</h1><h1>Port: " + 8081 + "</h1>";
            exchange.sendResponseHeaders(200, response.length());
            OutputStream os = exchange.getResponseBody();
            //os.write(response.getBytes());
            Map<String, Object> root = new HashMap<>();
            root.put("port", 3000);
            Template home = App.cfg.getTemplate("home.ftlh");
            home.process(root, os);
            os.close();
        }
    }
    public static class EchoHeaderHandler implements HttpHandler{
        public void handle(HttpExchange exchange){

        }
    }
    public static class EchoGetHandler implements HttpHandler{
        public void handle(HttpExchange exchange){

        }
    }
    public static class EchoPostHandler implements HttpHandler{
        public void handle(HttpExchange exchange){

        }
    }
}

build.gradle

repositories {
    mavenCentral()
}
apply plugin: "java"
dependencies {
    compile "org.freemarker:freemarker:2.3.28"
}
sourceSets {
    main.java.srcDir "src/main"
}
jar {
    from configurations.compile.collect { zipTree it }
    manifest.attributes "Main-Class":"com.isaackrementsov.app.App"
}

Моя структура каталогов

workspace
  build
    classes
      java
        main
          //Source code compiles here
    libs
    tmp
      compileJava
        jar
  src
    main
      com
        isaackrementsov
          app
            //Source code here

Мое целоепроект находится здесь: Cloud9 Project

...