无法解析符号路径

IntelliJ IDEA 14中没有的“路线”有什么问题?

这里

你试过没有***吗?

 return redirect(routes.Application.index(); 

根据文件 :

对于路径文件中使用的每个控制器,路由器将在路由包中生成一个“反向控制器”,具有相同的操作方法,具有相同的签名,但返回play.mvc.Call而不是play.mvc.Result 。

编译应用程序时会生成反向控制器。 因此,您需要编译应用程序,以便在IDE中访问这些类。 要确保Idea正确找到文件,您可以右键单击包含生成的类的target的子目录,并将其标记为源目录。

我几次遇到这个问题。 对我来说,该项目将使用sbt编译,但Intellij无法解析引用。 以下是我发现的一些原因:


原因1:命名空间混乱

造成这种情况的一个原因是,由于一些通配符导入,Intellij对名称空间感到困惑 – 它实际上与项目配置无关。

例如,我们发现如果import play.api._ ,那么Intellij将无法解析import controllers.routes (或import controllers.routes任何其他内容)。 如果你切换它们,它没关系。

您可以通过移动导入来测试这是否是问题,或者查看相同的导入是否在不同的文件中工作。

要检查Intellij是否真的无法解析您的类,请尝试从_root_引用该类。 通过上面的示例,Intellij始终能够解析_root_.controllers.routes ,因此我知道这不是与我的项目配置有关的问题。

(我不会在代码中留下那个_root_ ,我觉得它有点难看和混乱!有人会删除它然后问题会回来。相反我会尝试删除外卡导入)


原因2:生成的源未标记为“源”

view中的routes和其他模板类等类是自动生成的。 项目可能没有正确配置,Intellij没有意识到有自动生成的路径和旋转源文件。

在我的系统上,那些自动生成的文件夹存在于target/scala-[VERSION]/作为src_managed (所有路由的东西)和twirl (所有模板的东西)。

要检查/修复此问题,请执行:

  • 文件 – >项目结构
  • 在左窗格中选择“模块”
  • 在中心窗格中选择相关模块
  • 选择右窗格中的“来源”选项卡
  • target内找到上面提到的文件夹并将src_managed/maintwirl/main标记为“Sources”(注意你标记main文件夹,而不是外部文件夹)

原因3:排除target

我发现有时在导入项目时,Intellij会自动将target目录标记为已排除。 这意味着它内部的“来源”实际上被忽略了。 因此,请确保自动生成的源不在某个排除的目录中。

要解决此问题,请按照2中的说明进行操作,并确保target文件夹没有特殊标记。 在我的Intellij版本中,这意味着图标是正常的棕色 – 不是红色或蓝色。

如果您必须这样做,那么可能不会排除target内的所有目录。 为了完整起见,我会递归地将所有目录(如resolution-cachestreams )标记为已排除,以便不排除旋转和路径源目录。


不幸的是,作为一个团队,我们经常遇到这些问题。 我们使用的一个技巧是只复制/粘贴彼此的.idea/modules/root.iml文件,就像所有配置所在的那样。 因此,如果一个开发人员有一个工作设置,只需将他们的Intellij conf复制到您自己的机器上。

这是我的conf的片段,它涉及如何配置源和排除(它基本上复制了上面2和3中的步骤)。 我用它来玩2.3应用程序,它的工作原理。 如果您有其他复杂的配置或依赖项自动生成代码,您可以尝试将它合并到您的root.iml ,或者如果您有一个简单的播放项目,只需用您的content元素替换它:

 ...                 ... 

我解决了执行这个其他线程中指定的这两个步骤的问题https://stackoverflow.com/a/34085037/5078874

(我正在使用Idea 15.0.1)

 addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0") 

然后执行命令:

 sbt gen-idea 

正如biesior所说,这对我有用 :

 return redirect(controllers.routes.Application.index());