В Windows я могу запустить скрипт Scala из другого каталога, используя пакетный скрипт, например:
Hello.bat:
@scala "%~dp0Hello.scala" %*
(% ~ dp0 будет преобразован в путь, по которому находится пакетный файл)
Так что я могу назвать это так:
c:\somedir>path\to\scala\script\Hello
Hello World!
c:\somedir>path\to\scala\script\Hello Moon
Hello Moon!
Или, если каталог, в котором находится скрипт, уже находится в пути, я мог бы просто использовать:
c:\somedir>Hello
Hello World!
c:\somedir>Hello Moon
Hello Moon!
Я не могу сделать то же самое для скомпилированных классов:
@scala "%~dp0Hello.class" %*
не будет работать, а
@scala -howtorun:object "%~dp0Hello.class" %*
не будет работать, как и
@scala -howtorun:object "%~dp0Hello" %*
Вот этот:
@scala -howtorun:object "Hello" %*
работает только если я нахожусь в той же директории, что и:
@scala Hello %*
И
@cd %~dp0
@scala Hello %*
работает, но выходит в каталог скрипта, а не там, где я был, когда я его вызывал!
Как мне сообщить scala, где найти класс, который я пытаюсь запустить?