IntelliJ IDEA报告在Controller中使用路由时突出显示错误

mr.*_*fox 34 intellij-idea scala-2.10 playframework-2.2

我有一个Scala Play项目.我正在使用Play 2.2.1.我下载了Scala,Play 2支持和SBT插件.一切都还可以,但是当我在Controller中调用Route on Action时出现以下错误(Look screenshots):

Screenshot1

Screenshot2

我正在使用IntelliJ IDEA 12.1.6 Ultimate版本.Scala版本2.10.2

有谁知道如何解决这个问题?

提前致谢!


编辑

当我通过play console中的"play idea"命令生成我的项目到Intellij IDEA时,我在IDEA项目结构中打开项目是这样的:

screenshot6

然后我看到回答@millhouse并讨论这个githup([Play 2.2]"play idea"在目标中创建了不工作的源映射)并从Sources文件夹中删除了以下文件:

  • 目标\阶-2.10\src_managed \主\控制器
  • 目标\斯卡拉2.10\src_managed \主\意见

并且"报告突出显示错误"消失了,但现在还有另一个错误:

screenshot3

screenshot7

我的路线:

screenshot4

我已经更改了"Sources Folders",如下所示:

screenshot5

但它对我没有帮助.并且仍然是"未指定的值参数"错误.

wm_*_*die 48

millhouse的回答帮助我找到了正确的答案.播放2.2(可能是早期版本,尚未检查)将路径文件的scala版本输出到project_dir/target/scala-2.10/src_managed/mainSo,以便IntelliJ获得突出显示权限,确保将src_managed/main其添加为源文件夹.javascript的反向路由由于某种原因包含在内,project_dir/target/scala-2.10/classes_managed所以你也必须添加它.(在您的屏幕截图中,它看起来classes_managed被设置为排除,因此您需要通过按右侧的x按钮取消排除它.)

这是我的项目结构的屏幕截图:

Working Play 2.2项目结构

更新:

在Play 2.3(或者可能是IntelliJ的最新版本)中,添加classes_managed不再能解决问题.而不是将classes_managed添加到项目的源中,而是将其添加到它的依赖项中.通过这样做,IntelliJ应该能够获取已编译的routes.class.

Working Play 2.3依赖列表

  • 我没有`classes_managed`文件夹(play-scala-intro模板,Play 2.4.1):( (3认同)
  • 我还在试图弄清楚我要做些什么才能让它与Play 2.4一起工作...... (3认同)
  • 如果仍然在执行文件>无效缓存时出错,则重启可能会有所帮助. (2认同)

mil*_*use 8

这是一个常见问题,因为IntelliJ需要显示在哪里查找已编译的 Scala模板和routes文件.以下是我在IntelliJ 12.1安装上修复它的方法:

  • 在IntelliJ中转到项目的模块设置(选择顶级,点击F4)
  • 在出现的"项目结构"窗口中选择"模块"项
  • 选择projectname项(而不是projectname-build项)
  • 将编译器的输出目录添加到源文件夹项目;
    • 对于Scala 2.10来说 target/scala-2.10/classes
    • 我个人认为IntelliJ UI非常不直观; 您可能需要先将target目录和/或其中一个子目录从" 排除的文件夹"中取出
  • 应用该更改后,IntelliJ应该看到将每个文件routes.scala.html文件编译为另一个源文件的结果,因此它们不会显示为"已损坏",并且自动完成应该适用于它们.