Может компилировать Scala программы, но не может их запускать

Я могу скомпилировать scala программы, используя scalac в терминале, но я получаю предупреждение.

Charless-Macintosh:src Charles$ scalac hello.scala
Charless-Macintosh:src Charles$ scala HelloWorld
No such file or class on classpath: HelloWorld

Это связано с .profile на scala. Я довольно смущен, что происходит. Большое спасибо

Ответ 1

Текущий каталог обычно не находится в пути к классам по умолчанию. Поэтому вам нужно явно указать:

$ scala -cp . HelloWorld

Ответ 2

Проблема заключается в том, что вы установили переменную среды CLASSPATH.

От > man scalac:

Путь по умолчанию - это текущий каталог. Установка переменной CLASSPATH или с помощью параметра командной строки -classpath переопределяет это значение по умолчанию, поэтому, если вы хотите включить текущий каталог в путь поиска, вы должны включить ".". в новых настройках.

Когда у вас установлен набор переменных CLASSPATH, scala не будет включать текущий каталог в свой поиск, вы должны явно добавить его. Вот почему работает scala -cp . HelloWorld.

Чтобы проверить, выполните echo CLASSPATH и он должен указать некоторую непустую строку. Проверьте файлы .bashrc/.zshrc для любого export CLASSPATH=... и удалите эти строки.

Ответ 3

Это также происходило со мной, но я думаю, что лучшим решением является изменение переменной CLASSPATH для включения текущего каталога в дополнение к тому, что у вас уже было. например.

export CLASSPATH=.:$CLASSPATH

Теперь вы можете просто использовать scala HelloWorld без этого дополнительного аргумента.