Scala sbt控制台 - 代码更改未反映在sbt控制台中

时间:2012-10-03 07:11:54

标签: scala sbt

我使用scala sbt console来测试我的方法。 (命令: sbt 然后控制台)但是在eclipse或其他外部编辑器中完成的代码更改不会反映在sbt控制台中。

每次,我都必须退出控制台(使用Crt + D)并再次使用 console 命令启动它以查看更改。

任何人都面临这个问题? 有没有办法从控制台重新加载代码?

我使用的是Ubuntu 64-Bit,

2 个答案:

答案 0 :(得分:30)

不是没有使用像JRebel这样的东西,主要是因为类定义可能会破坏使实例已经加载不可用的方式。我唯一的建议是使用 ~console 运行控制台,这样如果已经进行了更改,它们将被重新编译并重新进入控制台。

此外,如果您经常运行一组命令,则initialCommands sbt设置会将命令配置为在启动控制台后立即运行。

答案 1 :(得分:19)

一个选项是在控制台中使用:restart - 这会重新加载它并重播到目前为止您输入的所有命令。

为了获得更好的解决方案,您可能希望使用JRebel& amp;读取关于增量开发的blog post。斯卡拉。

您应该像这样修改sbt启动脚本:

#!/bin/bash

java -noverify -javaagent:/home/username/path/to/jrebel/jrebel/jrebel.jar
 -Drebel.lift_plugin=true -XX:+CMSClassUnloadingEnabled
 -XX:MaxPermSize=512m -Xmx512M -Xss2M -jar `dirname $0`/sbt-launch.jar
 "$@"

从SBT内部启动REPL时,例如使用以下命令:

sbt console

对导入的类的更改将自动反映,而无需执行:replayrestart REPL - 让人联想到交互式Lisp编程。