2017-10-19 44 views
5

如果我在Intellij的Scala工作表的顶部导入了一个对象的内容,那么当我向对象添加新的东西时,工作表。即使在我构建项目并重新评估工作表后,它也找不到新的属性。自动完成的作品。如果我退出并重新启动IntelliJ,它将起作用。IntelliJ:Scala工作表不会在没有重新启动的情况下接收代码更改

这是错误:

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 

回答

7

这似乎解决它,虽然我爱知道为什么默认设置被破坏或者这个没有记录的设置会做什么:去文件 - >设置 - >语言&框架 - > Scala - >工作表(标签)。取消选择“在编译器进程中运行工作表”。

0

如果其他人最终在这里与我一样困惑,并发现上述内容不能解决问题,请尝试在首选项>构建,执行,部署>编译器中取消选中“使用外部编译服务器进行scala”复选框> Scala编译器> Scala编译服务器(您也可以从Intellij右下角的类速度计图标进入该视图)。

与Scala工作表视图中的“Make project”结合使用,这似乎确保修改在工作表中正确编译和可见。

相关问题