IntelliJ:Scala工作表无需重新启动即可获取代码更改

时间:2017-10-19 02:50:54

标签: scala intellij-idea

如果我在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

2 个答案:

答案 0 :(得分:31)

这似乎解决了这个问题,虽然我会知道默认设置被破坏的原因,或者这个未记录的设置的作用:转到文件 - >设置 - >语言与框架 - > Scala - >工作表(标签)。取消选择"在编译过程中运行工作表"。

答案 1 :(得分:0)

如果其他人最终在这里感到困惑,并发现上述内容并未解决问题,请尝试取消选中"使用外部编译服务器进行scala" “首选项”中的复选框>构建,执行,部署>编译器> Scala编译器> Scala Compile Server(您也可以从Intellij右下方的车速表图标中获取此视图)。

结合"制作项目"在Scala工作表视图中,这似乎可以确保在工作表中正确编译和显示更改。