类型HomeController不是包控制器的成员 - 编译错误

时间:2018-01-02 04:40:39

标签: java playframework playframework-2.0

My Play Framework过去一直工作,直到我重建项目。然后我收到了这个错误。

我的问题正是这个post中描述的问题。

这是另一个post中的最佳答案。

  

默认情况下,播放2.4生成依赖注入路由器,不像   以前,当它使用静态路由器时。你有两个选择,删除   来自build.sbt的routesGenerator行如此播放将生成静态   路由器,或(更好)使您的控制器类而不是对象,   并使用依赖注入。

这对我也没有用。没有routesGenerator行build.sbt。 HomeController已经是一个类。

build.sbt

name := """BookStoreApp"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.12.2"

libraryDependencies += guice

// Test Database
libraryDependencies += "com.h2database" % "h2" % "1.4.194"

// Testing libraries for dealing with CompletionStage...
libraryDependencies += "org.assertj" % "assertj-core" % "3.6.2" % Test
libraryDependencies += "org.awaitility" % "awaitility" % "2.0.0" % Test

// Make verbose tests
testOptions in Test := Seq(Tests.Argument(TestFrameworks.JUnit, "-a", "-v"))

家庭控制器

package controllers;

import play.mvc.*;
import views.html.*;

public class HomeController extends Controller {
    public Result startGame() {
        return ok(gameView.render());
    }

    public Result statsPage(){
        return ok(statsView.render());
    }

}

1 个答案:

答案 0 :(得分:0)

  

没有routesGenerator行build.sbt。 HomeController已经是一个类。

因此您需要将该行添加到build.sbt

routesGenerator := InjectedRoutesGenerator

此行默认为2.5(可以省略),但在2.4中,如果要使用DI控制器,则必须在built.sbt

你想要,因为你写public Result startGame()但是public static Result startGame()