【问题标题】:Play Framework Compile Error: } expected but eof found播放框架编译错误:} 预期但发现 eof
【发布时间】:2016-03-09 17:51:06
【问题描述】:

当我尝试编译我的 Play Framework 2.4 项目时,我收到此错误:

`}' expected but eof found.
In /Users/dylhunn/Documents/workspace/my-project/app/controllers/Application.java

这似乎表明我没有匹配我的牙套。然而,大括号实际上是正确匹配的,即使我添加额外的(任意多个)闭合花括号,错误仍然存​​在。

我已经尝试过“激活剂清洁”。

这是我的 Application.java:

package controllers;

import model.UserAccountManager;
import play.data.Form;
import play.libs.Json;
import play.mvc.*;
import harmony.core.Harmonizer;

import play.twirl.api.Content;
import views.html.*;

import java.net.URLDecoder;
import java.util.*;

import static play.data.Form.form;

public class Application extends Controller {

    public Result index() {
        if (validSessionIsActive()) return harmonizepage();
        else return landing();
    }

    public Result about() {
        Content html = views.html.auxtemplate.render("title", "content");
        return ok(html);
    }

    public Result contact() {
        Content html = views.html.auxtemplate.render("title", "content");
        return ok(html);
    }

    public Result landing() {
        return ok(views.html.landing.render(form(Credentials.class)));
    }

    public Result login(String message) {
        if (validSessionIsActive()) return index();
        if (message == null) message = "";
        return ok(views.html.loginpage.render(Form.form(Credentials.class), message));
    }

    public Result logout() {
        String user = session("user-email");
        session().clear();
        if (user == null) return login("You were not logged in.");
        return login("User " + user + " has been logged out.");
    }

    public Result harmonizepage() {
        if (!validSessionIsActive()) return login("Please sign in to acess this page.");
        return ok(views.html.harmonize.render());
    }

    public Result testRegister() {
        return ok(views.html.signuppage.render(Form.form(UserData.class));
    }

    public static class Credentials {
        public String email;
        public String password;
    }

    public static class UserData {
        public String email;
        public String password;
        public String name;
        public String location;
        public String birthday;
    }

    public Result loginSubmit() {
        Form<Credentials> loginForm = form(Credentials.class).bindFromRequest();
        if (UserAccountManager.userRegistered(loginForm.get().email)) {
            if (UserAccountManager.authenticate(loginForm.get())) { // success
                session("user-email", loginForm.get().email);
                return harmonizepage();
            } else { // Incorrect password
                return login("Incorrect password for that email address.");
            }
        } else { // New user
            session("candidate-email", loginForm.get().email);
            session("candidate-password", loginForm.get().password);
            session("registration-in-progress", "true");
            return login("Sorry -- signups are still closed!");
        }
    }

    public Result signupSubmit() {
        if (!session("registration-in-progress").equals("true")) return login("");
        session("registration-in-progress", "false");
        Form<UserData> suForm = form(UserData.class).bindFromRequest();
        UserData data = suForm.get();
        data.email = session("candidate-email");
        data.password = session("candidate-password");

        UserAccountManager.registerUser(data);

        return index();
    }

    /**
     * Checks the session cookie to see if a valid username is stored there.
     */
    public static boolean validSessionIsActive() {
        String email = session("user-email");
        return UserAccountManager.userRegistered(email);
    }

    public Result harmonize(String input) {
        if (!validSessionIsActive())
            return badRequest("No user is currently signed in. Try closing and reopening the site");
        try {
            input = URLDecoder.decode(input, "UTF-8");
        } catch (Exception e) {
            return badRequest("The server received an unsupported URL encoding.");
        }
        List<String> inputChords = Arrays.asList(input.split(" "));
        List<List<String>> result = new ArrayList<>();
        String str = "";
        for (String s : inputChords) str = str + s + " ";
        try {
            result = Harmonizer.harmonize(str);
        } catch (Exception e) { // Harmonizing failed for some reason
            return badRequest(e.getMessage());
        }
        return ok(Json.toJson(result));
    }
}

【问题讨论】:

  • 清理项目并重建它。并在文件末尾添加一个空白换行符
  • @mmuzahid 遗憾的是,即使我手动删除了“目标”目录,这也不起作用。

标签: java playframework


【解决方案1】:

错误信息令人困惑,但问题出在testRegister 方法中。 render 调用未正确关闭。

return ok(views.html.signuppage.render(Form.form(UserData.class));

应该是

return ok(views.html.signuppage.render(Form.form(UserData.class)));

错误消息可能是某种 Scala 的东西弹出。

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多