我使用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
生成的,表明它仍在使用静态路由;所以我猜它与依赖注入有关,但除了迁移指南中的步骤之外,我在他们的文档中没有看到任何内容。
知道我缺少什么吗?
答案 0 :(得分:0)
您需要使用getClass().getResource("/resources/images/image.jpg");
代替。换句话说,不要使用play.mvc.Controller
包,因为它们仅用于scala项目。只需将您的代码更改为:
api
关于你的笔记:
使用Activator创建项目,然后将其导入IDEA。
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足以迁移您的应用。