У меня очень простая цель: скомпилировать класс Scala, а затем загрузить его из другого Scala script. Проблема заключается в том, что Scala похоже кэширует (не уверен, где) классы, которые я создаю, и не соблюдает последующие изменения.
Следующие строки создают каталог с двумя файлами .scala, компилируют один и запускают другое:
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
Если я запустил вышеуказанные строки, мне нужно REBOOT MY COMPUTER для следующих ниже строк:
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 -land он кэширует предыдущий конструктор на основе String.