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



我的Play Framework曾经工作,直到我重建项目。然后我收到此错误。

我的问题正是这篇文章中描述的问题。

这是另一篇文章中的首要答案。

默认情况下,Play 2.4会生成一个依赖注入的路由器,这与 以前,当它使用静态路由器时。您有两个选项,请删除 来自build.sbt的routesGenerator行,所以play将生成一个静态的 路由器,或者(更好地(使控制器类而不是对象, 并使用依赖注入。

这对我也不起作用。没有路由生成器线路构建.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());
    }
}

没有路由生成器线路构建.sbt。HomeController 已经是一个类。

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

routesGenerator := InjectedRoutesGenerator

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

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

最新更新