List 斯卡拉:“我的朋友。”;太多的争论”;使用Scala 2.7.7的IntelliJ IDEA 11中出现错误

List 斯卡拉:“我的朋友。”;太多的争论”;使用Scala 2.7.7的IntelliJ IDEA 11中出现错误,list,scala,intellij-idea,highlighting,List,Scala,Intellij Idea,Highlighting,IntelliJ 10.5和11都突出显示了下面的表达式x(0),表示它使用了“太多的参数”。但是,编译和运行示例时没有错误。由于向下兼容,我不得不使用Scala 2.7.7。当使用Scala 2.8及以上版本时,IntelliJ停止抱怨 object HelloWorld { def main(args: Array[String]) { val x = List("Hello World!") println(x(0)) } } 有什么建议吗?我的项目充满了这些被I

IntelliJ 10.5和11都突出显示了下面的表达式x(0),表示它使用了“太多的参数”。但是,编译和运行示例时没有错误。由于向下兼容,我不得不使用Scala 2.7.7。当使用Scala 2.8及以上版本时,IntelliJ停止抱怨

object HelloWorld {
  def main(args: Array[String]) {
    val x = List("Hello World!")
    println(x(0))
  }
}

有什么建议吗?我的项目充满了这些被IntelliJ错误突出显示的正确表达式。

如果scalac编译正确,听起来像IDEA的Scala插件中的一个bug(这很常见)。这可能是因为它与Scala 2.7.7不太兼容,在这种情况下,使用旧版本的插件可能会有所帮助(旧版本的插件可能还需要旧版本的IDEA;例如,尝试IDEA 9及其Scala插件)。

如果scalac编译正确,听起来像IDEA的Scala插件中的错误(这很常见)。这可能是因为它与Scala 2.7.7不太兼容,在这种情况下,使用旧版本的插件可能会有所帮助(旧版本的插件可能还需要旧版本的IDEA;例如,尝试IDEA 9及其Scala插件)。

这是因为在字节码中存储Scala特定信息的方式不同。在Scala2.8之前是ScalaAttribute,现在是ScalaAnnotation。当前的反编译器版本无法正确使用Scala 2.7生成的字节码。如果您尝试在IntelliJ IDEA中打开任何此类类文件,您将看到所有方法都没有参数。
您可以尝试将旧插件发行版中的Scala插件目录scalap.jar放入Scala插件目录,但我不确定二进制兼容性,因此唯一的方法是使用早期版本的IDEA,使用另一个IDE或不使用Scala 2.7。

这是因为以字节码存储Scala特定信息的方式不同。在Scala2.8之前是ScalaAttribute,现在是ScalaAnnotation。当前的反编译器版本无法正确使用Scala 2.7生成的字节码。如果您尝试在IntelliJ IDEA中打开任何此类类文件,您将看到所有方法都没有参数。
您可以尝试将旧插件发行版中的Scala插件目录scalap.jar放入Scala插件目录,但我不确定二进制兼容性,因此唯一的方法是使用早期版本的IDEA,使用另一个IDE,或者不使用Scala 2.7。

相信IntelliJ……如果它说它们不正确,那么它们很可能不正确。我在上面的示例中没有看到任何错误。正如我所说,它编译和运行时没有错误。只是IntelliJ在抱怨!相信IntelliJ。有件事你应该知道。@duffymo-虽然我很喜欢Intellij,但scala插件中有很多突出显示的bug。你应该相信scalac,而不是Intellij。相信Intellij……如果它说它们是错误的,它们很可能是错误的。我在上面的例子中没有看到任何错误。正如我所说,它编译和运行时没有错误。只是IntelliJ在抱怨!相信IntelliJ。有件事你应该知道。@duffymo-虽然我很喜欢Intellij,但scala插件中有很多突出显示的bug。你应该相信scalac,而不是Intellij。