使用Intellij 15创建新的Play应用程序时的控制器问题

时间:2016-02-27 17:47:37

标签: java scala intellij-idea playframework

我使用Intellij 15创建了一个新的Play应用程序。使用的播放版本是2.4.2所以我在migration guide之后将其更新为2.4.6。我将我的应用程序控制器更改为Java类,但现在我收到以下错误:

Class 'Application' must either be declared abstract or implement abstract method 'RequestTimeout()' in 'Controller'

以下是我的应用程序控制器的样子:

package controllers;

import play.api.mvc.Controller;
import play.api.mvc.Result;

public class Application extends Controller {
    public Result index() {
        return ok(views.html.index("Your new application is ready."));
    }
}

我按照迁移指南的依赖注入部分的建议,将路由生成器(routesGenerator := InjectedRoutesGenerator)添加到我的build.sbt

最后的一些说明:

(1)我将应用程序创建为Scala Play应用程序,因为当我尝试使用Play框架将其创建为Java应用程序时,IntelliJ没有正确生成项目,而且我还想使用sbt。

(2)我注意到Scala Application控制器是作为object而不是class生成的,表明它仍在使用静态路由;所以我猜它与依赖注入有关,但除了迁移指南中的步骤之外,我在他们的文档中没有看到任何内容。

知道我缺少什么吗?

1 个答案:

答案 0 :(得分:0)

您需要使用getClass().getResource("/resources/images/image.jpg"); 代替。换句话说,不要使用play.mvc.Controller包,因为它们仅用于scala项目。只需将您的代码更改为:

api

关于你的笔记:

  1. 使用Activator创建项目,然后将其导入IDEA。

  2. Activator可能会使用DI而不是package controllers; import play.mvc.Controller; // no .api. import play.mvc.Result; // no .api. public class Application extends Controller { public Result index() { return ok(views.html.index("Your new application is ready.")); } } 创建项目来定义控制器。无论如何,steps at the migration guide足以迁移您的应用。