Java 使用Intellij 15创建新播放应用程序时出现控制器问题

Java 使用Intellij 15创建新播放应用程序时出现控制器问题,java,scala,intellij-idea,playframework,Java,Scala,Intellij Idea,Playframework,我用Intellij 15创建了一个新的播放应用程序。使用的播放版本是2.4.2,所以我在更新后将其更新为2.4.6。我将应用程序控制器更改为Java类,但现在出现以下错误: Class 'Application' must either be declared abstract or implement abstract method 'RequestTimeout()' in 'Controller' 下面是我的应用程序控制器的外观: package controllers; impor

我用Intellij 15创建了一个新的播放应用程序。使用的播放版本是2.4.2,所以我在更新后将其更新为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应用程序控制器是作为
对象而不是
类生成的,这表明它仍然使用静态路由;所以我猜这与依赖注入有关,但是除了迁移指南中的步骤之外,我在他们的文档中没有看到任何东西


你知道我遗漏了什么吗?

你需要使用
play.mvc.Controller
。换句话说,不要使用
api
包,因为它们只用于scala项目。只需将代码更改为:

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."));
    }
}
关于你的笔记:

  • 用于创建项目,然后将其导入IDEA

  • Activator可能会使用DI而不是
    对象来创建项目,以定义控制器。不管怎么说,迁移应用程序就足够了


  • 谢谢,成功了。谢谢你的提示,我把Activator忘得一干二净了。