无法解析IntelliJ中的反向路由方法

我正在关注其中一个游戏框架教程,但每当我尝试使用反向路由时,我都会遇到编译错误。 首先,

public static Result javascriptRoutes() { response().setContentType("text/javascript"); return ok( Routes.javascriptRouter("jsRoutes", controllers.routes.javascript.Projects.add(), controllers.routes.javascript.Projects.delete(), controllers.routes.javascript.Projects.rename(), controllers.routes.javascript.Projects.addGroup() ) ); } 

在intelliJ中显示的错误是’无法解析方法javascriptRouter(java.lang.String,?,?,?,?)’

而且在unit testing中:

 @Test public void notAuthenticated() { Result result = callAction( controllers.routes.ref.Application.index(), fakeRequest() ); assertEquals(303, status(result)); assertEquals("/login", header("Location", result)); } 

它无法解析索引方法。

这是smartJ的问题,还是我在游戏中遗漏了什么?

对于第一部分,这是我的路线文件中的条目:

 GET /assets/javascripts/routes controllers.Application.javascriptRoutes() 

我的控制器Projects已经定义了方法。

文件 – > 项目结构

在右窗格中选择来源

添加源文件夹

目标/阶-XXX / classes_managed

目标/阶-XXX / src_managed /主

我遇到了同样的问题,并在此处找到了解决方案: https : //github.com/playframework/Play20/issues/969

简而言之:

  • 在controllers包下创建目录javascriptref
  • 运行activator compile ,现在Intellij应该得到它//以前是’play compile’
  • 如果你仍然有错误尝试再次运行activator idea //曾经是’play compile’*

从@Markus Kittig提供的链接中拉出。 很棒的临时修复。 https://github.com/playframework/playframework/issues/1784#issuecomment-26345523

概要:将target / scala-XXX添加为托管源,并删除文件 – >项目结构 – >模块 – >源中的应用程序控制器和视图源标志。 然后重新编译。

适用于IntelliJ Ultimate 12.1。{4 | 6}。 使用命令行界面创建播放应用程序,并使用play idea生成项目文件。 二手Play 2.2.0。

使用IntelliJ 14.1和Play 2.3.8,上述任何工作都没有,但是这个邮件列表的建议是有效的。 (几乎)公然复制:

在项目视图中找到target / scala-2.11 / src_managed和target / scala-2.11 / twirl目录,然后右键单击并将目录标记为 – >生成的源(根)

我碰到了scala版本,显然在更新版本的IntelliJ中添加了Root字。 此外,您无法从“项目结构”窗口中选择此选项,该选项不可用。 只能通过主窗口中的“ Project窗格进行操作。 如果拒绝将其标记为“ Generated Sources ,请尝试取消标记target目录( target目录标记为 – >取消标记)。

对于使用Play 2.4.x或更高版本的用户来说,似乎Play不再为src_managed等中的javascript生成反向路由文件。

相反,您需要将scala-2.xx/routes/main目录包含为Sources

这个问题是在一年前提出的,但为了回答其他编码人员未来的查询,通过添加像这样的“play.Routes”路径可以轻松解决问题。

 public static Result javascriptRoutes() { response().setContentType("text/javascript"); return ok( play.Routes.javascriptRouter("jsRoutes", // Routes for Projects controllers.routes.javascript.Projects.add(), controllers.routes.javascript.Projects.delete(), controllers.routes.javascript.Projects.rename(), controllers.routes.javascript.Projects.addGroup() ) ); 

}

确保您具有适当的类导入:

 import play.mvc.*; import play.data.*; 

我正在使用Idea 14.1.4社区版,我设法通过右键单击目标文件夹并将其标记为未排除来删除索引并路由未解决的错误。 注意我使用命令行运行我的项目我在ide中找不到任何运行配置。