如果我在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
答案 0 :(得分:31)
这似乎解决了这个问题,虽然我会爱知道默认设置被破坏的原因,或者这个未记录的设置的作用:转到文件 - >设置 - >语言与框架 - > Scala - >工作表(标签)。取消选择"在编译过程中运行工作表"。
答案 1 :(得分:0)
如果其他人最终在这里感到困惑,并发现上述内容并未解决问题,请尝试取消选中"使用外部编译服务器进行scala" “首选项”中的复选框>构建,执行,部署>编译器> Scala编译器> Scala Compile Server(您也可以从Intellij右下方的车速表图标中获取此视图)。
结合"制作项目"在Scala工作表视图中,这似乎可以确保在工作表中正确编译和显示更改。