我使用scala sbt console来测试我的方法。 (命令: sbt 然后控制台)但是在eclipse或其他外部编辑器中完成的代码更改不会反映在sbt控制台中。
每次,我都必须退出控制台(使用Crt + D)并再次使用 console 命令启动它以查看更改。
任何人都面临这个问题? 有没有办法从控制台重新加载代码?
我使用的是Ubuntu 64-Bit,
答案 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
对导入的类的更改将自动反映,而无需执行:replay
或restart
REPL - 让人联想到交互式Lisp编程。