43

私はscalasbtコンソールを使用してメソッドをテストしています。(コマンド:sbt then console)しかし、Eclipseまたは他の外部エディターで行われたコード変更は、sbtコンソールに反映されていません。

毎回、(Crt + Dを使用して)コンソールを終了し、コンソールコマンドを使用してコンソールを再起動して変更を確認する必要があります。

この問題に直面している人はいますか?コンソールからコードをリロードする方法はありますか?

私はUbuntu64ビットを使用しています。

4

2 に答える 2

35

JRebelのようなものを使用せずにはいられません。主な理由は、クラス定義が壊れて、すでにロードされているインスタンスが使用できなくなる可能性があるためです。私が持っている唯一の提案は、〜consoleを使用してコンソールを実行し、変更が加えられた場合にそれらが再コンパイルされ、コンソールが再入力されるようにすることです。

また、一連のコマンドを定期的に実行している場合、initialCommands sbt設定は、コンソールの起動直後に実行されるようにコマンドを構成します。

于 2012-10-03T07:40:45.590 に答える
20

1つのオプションは、コンソールで使用すること: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インポートされたクラスへの変更は、またはrestartREPLを実行する必要なしに自動的に反映されます。これはインタラクティブなLispプログラミングを彷彿とさせます。

于 2012-10-03T11:24:45.420 に答える