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

时间:2013-11-27 06:47:13

标签: intellij-idea scala-2.10 playframework-2.2

我有一个Scala Play项目。我正在使用Play 2.2.1。我下载了Scala,Play 2支持和SBT插件。一切都很好,但是当我在控制器中调用路径时出现以下错误(查看截图):

Screenshot1

Screenshot2

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

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

提前致谢!


  

修改

当我通过播放控制台中的“播放创意”命令生成我的项目到Intellij IDEA时,我在IDEA项目结构中打开项目是这样的:

screenshot6

然后我看到回答@millhouse并讨论这个githup([Play 2.2] "play idea" creates not working source mapping in target)并从来源文件夹中删除了以下文件夹:

  
      
  • 目标\阶-2.10 \ src_managed \主\控制器
  •   
  • 目标\阶-2.10 \ src_managed \主\观点
  •   

和“报告突出显示错误”消失了,但现在又出现了另一个错误:

screenshot3

screenshot7

我的路线:

screenshot4

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

screenshot5

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

2 个答案:

答案 0 :(得分:48)

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

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

Working Play 2.2 project structure

<强>更新

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

Working Play 2.3 dependency list

答案 1 :(得分: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文件编译为另一个源文件的结果,因此它们不会显示为“已损坏”并且应该自动完成为他们工作。