我有一个Scala Play项目。我正在使用Play 2.2.1。我下载了Scala,Play 2支持和SBT插件。一切都很好,但是当我在控制器中调用路径时出现以下错误(查看截图):
我正在使用IntelliJ IDEA 12.1.6 Ultimate版本。 Scala版本2.10.2
有人知道如何解决这个问题吗?
提前致谢!
修改
当我通过播放控制台中的“播放创意”命令生成我的项目到Intellij IDEA时,我在IDEA项目结构中打开项目是这样的:
然后我看到回答@millhouse并讨论这个githup([Play 2.2] "play idea" creates not working source mapping in target)并从来源文件夹中删除了以下文件夹:
- 目标\阶-2.10 \ src_managed \主\控制器
- 目标\阶-2.10 \ src_managed \主\观点
和“报告突出显示错误”消失了,但现在又出现了另一个错误:
和
我的路线:
我已经更改了“Sources Folders”,如下所示:
但它对我没有帮助。并且仍然是“未指定的值参数”错误。
答案 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按钮取消排除它。)
以下是我的项目结构的屏幕截图:
<强>更新强>:
在Play 2.3(或者可能是IntelliJ的最新版本)中,添加classes_managed不再能解决问题。而不是将classes_managed添加到项目的源中,而是将其添加到它的依赖项中。通过这样做,IntelliJ应该能够获取已编译的routes.class。
答案 1 :(得分:8)
这是一个常见问题,因为IntelliJ需要显示在哪里查找编译的 Scala模板和routes
文件。以下是我在IntelliJ 12.1安装上修复它的方法:
target/scala-2.10/classes
target
目录和/或其中一个子目录routes
和.scala.html
文件编译为另一个源文件的结果,因此它们不会显示为“已损坏”并且应该自动完成为他们工作。