web-dev-qa-db-ja.com

Scala sbt console-コードの変更がsbt consoleに反映されない

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

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

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

私はUbuntu 64ビットを使用していますが、

43
C.Karthik

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

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

34
Sean Parsons

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
 "$@"

REPLをSBTの内部から、たとえば次のコマンドで開始します。

sbt console

インポートされたクラスへの変更は、:replayまたはrestartを実行しなくても自動的に反映されますREPL-インタラクティブなLISPプログラミングを連想させるもの。

20
Bozhidar Batsov