私には非常に単純な目標があります。Scala クラスをコンパイルし、それを別の Scala スクリプト内からロードすることです。問題は、Scala が私が作成したクラスを (どこにあるかわからない) キャッシュしているように見え、その後の変更を尊重しないことです。
次の行は、2 つの .scala ファイルを含むディレクトリを作成し、1 つをコンパイルして、もう 1 つを実行します。
mkdir test
cd test
echo 'class MyClass(s: String)' > MyClass.scala
echo 'val p = new MyClass("ok")' > test.scala
scalac MyClass.scala
scala test.scala # this works
cd ..
rm -rf test
上記の行を実行する場合、以下の行を機能させるには、コンピューターを再起動する必要があります。
mkdir test
cd test
echo 'class MyClass()' > MyClass.scala
echo 'val p = new MyClass()' > test.scala
scalac MyClass.scala
scala test.scala # this doesn't
cd ..
rm -rf test
再起動しないと、コンストラクターに文字列がないというエラーが表示されます。以前の String ベースのコンストラクターをキャッシュしている Scala ランドの場所がわかりません。