我使用Scala SBT控制台测试我的方法。(命令:sbt然后console)但是在Eclipse或其他外部编辑器中进行的代码更改不会反映在SBT控制台中。
每次都必须退出控制台(使用Crt + D),然后再使用console命令重新启动控制台才能看到更改。
有人遇到这个问题吗? 是否有任何方式从控制台重新加载代码?
我正在使用Ubuntu 64位操作系统,
如果不使用类似JRebel这样的东西,大多数情况下是无法做到的,因为类定义可能会被破坏,导致已加载的实例无法使用。我唯一的建议是使用~console运行控制台,这样如果有更改,它们将被重新编译并重新进入控制台。
此外,如果您经常运行一组命令,则initialCommands sbt设置可以配置在启动控制台后立即运行的命令。
一个选项是在控制台中使用 :restart
- 这将重新加载并重放您输入的所有命令。
对于更好的解决方案,您可能希望阅读我的博客文章关于使用JRebel和Scala进行增量开发。
您应该像这样修改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编程。
~; compile
。 - Bluu~/.sbtconfig
中导出SBT_OPTS
。 - chb
exit
退出控制台后,它会重新编译并重新进入控制台。 - Mikaël Mayer