路由未编译到子路由文件中

Route not compiled in sub route file

我正在使用 Play 2.3.7 开发应用程序。 我有这个 routes 文件:

GET          /api-docs                             controllers.ApiHelpController.getResources

GET         /assets/*file                          controllers.Assets.at(path="/public", file)
GET         /swagger-ui/*file                      controllers.Assets.at(path="/public/swagger-ui", file)

->          /v1/episodes                           model_v1_episodes.Routes
->          /v1/seasons                            model_v1_seasons.Routes
->          /v1/series                             model_v1_series.Routes

我还有每个模型的 model_v1_* 个文件,以避免路径文件太长。这是其中之一

GET       /                         controllers.EpisodeController.list()
GET       /:key                     controllers.EpisodeController.load(key: String)
POST      /                         controllers.EpisodeController.create()
DELETE    /:key                     controllers.EpisodeController.delete(key: String)

问题是,当我想测试 EpisodeController.list() 时,我不能,因为 EpisodeController 不存在...

@Test
public void list() {
    Result result = callAction(controllers.routes.ref.EpisodeController.list(), new FakeRequest());
    // Assertions on result...
}

如果我在 target/scala-2.10/src_managed/main/controllers/routes.java 中手动检查,则没有 EpisodeController 的痕迹,而它存在于 controllers 包中。当我 run 我的应用程序并使用 Swagger 进行测试时,一切正常。

1 activator clean compile
2 activator eclipse

如果它没有帮助 运行 在调试模式下测试:

  • activator -jvm-debug 测试并检查问题所在...

也许日志会告诉您更多信息(来自 cmd 和来自应用程序)

正如@Mikesname 在对该问题的评论中所解释的那样,问题是我的控制器在 controllers 包中。 我将它们放入 controllers.mypackage 并将我的文件命名为 mypackage.routes,一切正常。