Intellij Scala无法识别运营商

时间:2014-01-25 16:21:39

标签: scala intellij-idea

我正在使用带有Scala的Play Framework,使用IntelliJ IDEA社区13开发。我已经从终端运行Play;一切正常。但是,IntelliJ无法识别字符串上使用的某些运算符。

这是我的代码:

package controllers

import play.api.mvc._
import play.api.libs.json._

object Application extends Controller {

  def index = Action {
    Redirect(routes.Application.tasks)
  }

  def tasks = TODO

  def newTask = TODO

  def deleteTask(id: Long) = TODO

  def sayHello = Action(parse.json) { request =>
    (request.body \ "name").asOpt[String].map { name =>
      Ok(Json.toJson(
        Map("status" -> "OK", "message" -> ("Hello " + name)) // this line
      ))
    }.getOrElse {
      BadRequest("Missing parameter [name]")
    }
  }

}

它在Play中编译并运行良好。但是,IntelliJ会将+->运算符标记为无效,当我悬停时,会给我一个“无法解析符号+

我知道这比其他任何事都更不方便,但这真的让我很烦。 我需要导入或配置什么才能让IntelliJ识别这些运营商?

4 个答案:

答案 0 :(得分:2)

显然,JetBrains采用了Scala插件的“永远处于测试阶段”的方法,因此请准备好经常看到错误。我每天都会报告,我必须承认,他们确实解决了我发布的问题。基本上我想说的是,每当你遇到Scala插件的任何问题时,只需发布​​它on their issue tracker

答案 1 :(得分:0)

确认安装并配置了最新版本的Scala和Play插件后,按照here所述,使用IntelliJ创建一个新的Play应用程序。

@Randall从另一方面解决问题的方法,让Play生成一个IntelliJ项目,应该可行,但我个人已经发现了问题,因为JetBrains对IntelliJ所做的更改导致了落后。它虽然可能对你有用。

答案 2 :(得分:0)

Randall在他的评论中给出了答案,你可能没有正确设置你的项目,或者在添加依赖项之后忘记了sbt gen-idea(并重新启动/重新加载Intellij)。另外,我注意到在更新IDE之后,奇怪的Intellij非识别错误经常消失。

答案 3 :(得分:0)

在scala中使用mkString方法时,我也遇到了同样的问题。而且intellij引发编译器警报为

  

无法识别符号mkString

但是当我在使用toString方法之前应用了mkString方法时。警报消失了,代码成功编译了