【问题标题】:Intellij has wrong scala syntax errorsIntellij 有错误的 scala 语法错误
【发布时间】:2015-01-09 17:40:04
【问题描述】:

我有这段代码:

object Application {
  def main(args: Array[String]) {
    import scala.concurrent.ExecutionContext.Implicits.global

    val ws = new NingWSClient(new AsyncHttpClientConfig.Builder().build())
    ws.url("https://www.google.com").get() onSuccess {
      case resp: WSResponse => {
        println("Hello");
      }
      case _ => {
        println("Error");
      }
    }
  }
}

每个依赖项都在 build.sbt 中很好地定义,如下所示:

name := "example"

version := "1.0"

scalaVersion := "2.11.4"

libraryDependencies ++= Seq(
  "com.typesafe.play" %% "play-ws" % "2.4.0-M2",
  "com.typesafe.play" %% "play-json" % "2.4.0-M2"
)

但是 Intellij 在查看我的项目时看起来像这样:

谁能告诉我我做错了什么,因为我一无所知,这真的很烦人,因为 Intellij 不断删除我的导入。

【问题讨论】:

  • 您不需要match 语句来使用模式匹配吗?
  • @BoristheSpider 不过,应该没什么区别吧?
  • onSuccess 方法接受一个 PartialFunction ,而 Scala 从括号括起来的一组 case 语句中生成一个,所以那里没有错。我确实在这里看到了其他一些问题。 concurrent 和 println 的红色突出显示由于某种原因 IntelliJ 没有找到 Scala 库。这可能是问题的全部。

标签: scala intellij-idea


【解决方案1】:

这看起来像是一个 IntelliJ(或 Scala 插件)错误。有时 scala 命名空间似乎没有得到很好的处理——自从我升级到版本 14 以来,我在我的项目中也看到了它。有时使用 File / Invalidate Caches/Restart 会有所帮助。

有时甚至添加/删除 Scala SDK 并使缓存无效也无济于事。在这种情况下,从 issue SCL-8025 Standard scala library unrecognized on sbt project creation on 2.11.4 安装 scalap.jar 可能会有所帮助(我的计算机上的 scala 插件位置是 %userprofile%\.IntelliJIdea14\config\plugins\Scala\lib)。

另一个issue SCL-7900 Scala import/auto-complete problem 似乎表明当 Idea 从 Java 8 使用 JRE 时出现问题 - 卸载 1.8 JDK 或将 IDEA_JDK_64 变量设置为指向 jdk7-64bit 文件也应该可以解决问题。

【讨论】:

  • 您的建议非常有效!我还在模块中添加了一个本地 Scala SDK,它与 Invalidate Caches 结合使用,成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2014-11-29
  • 2020-10-18
相关资源
最近更新 更多