【问题标题】:type HomeController is not a member of package controllers - compilation error类型 HomeController 不是包控制器的成员 - 编译错误
【发布时间】:2018-01-03 17:14:12
【问题描述】:

在我重建项目之前,我的 Play 框架一直有效。然后我得到这个错误。

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

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

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

这对我也不起作用。没有 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());
    }

}

【问题讨论】:

    标签: java playframework playframework-2.0


    【解决方案1】:

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

    所以你需要将该行添加到build.sbt

    routesGenerator := InjectedRoutesGenerator
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 2012-08-31
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多