如果我在Intellij的Scala工作表的顶部导入了对象的内容,则当我向该对象添加新内容时,在工作表中找不到这些内容。即使在构建项目并重新评估工作表之后,它也找不到新属性。自动完成功能。如果我退出并重新启动IntelliJ,它将起作用。

这是错误:

java.lang.NoSuchMethodError: Arith$.foo()Ljava/lang/String;
    at #worksheet#.get$$instance$$res6(ArithWS.sc:15)
    at A$A1$.main(ArithWS.sc:41)
    at #worksheet#.#worksheet#(ArithWS.sc)


奇怪的是,它似乎可以编译,但是在运行时失败。这是一个正常的SBT项目。 IntelliJ 2017.2.5,Scala 2.12.3。选中“创建项目”复选框没有帮助。实际上,复选框的组合都不起作用。重建项目或工作表都无济于事。只有重新启动IntelliJ,工作表才能获取新代码。

Arith.scala中的示例项目代码:

object Arith {
  val foo = "foo"
}


示例工作表ArithWS.sc:

import Arith._

foo

最佳答案

这似乎可以解决问题,尽管我很想知道为什么默认设置被破坏了,或者该未记录的设置做了什么:转到File-> Settings-> Languages&Frameworks-> Scala-> Worksheet(选项卡)。取消选择“在编译器过程中运行工作表”。

09-10 09:54
查看更多