У меня очень простая цель: скомпилировать класс Scala, а затем загрузить его из другого скрипта Scala. Проблема в том, что 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
Если я запускаю приведенные выше строки, мне нужно ПЕРЕЗАГРУЗИТЬ МОЙ КОМПЬЮТЕР, чтобы строки ниже работали:
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
Если я не перезагружаюсь, я получаю сообщение об ошибке, что в моем конструкторе отсутствует строка. Не уверен, где в Scala-land он кэширует предыдущий конструктор на основе String.