Ответ 1
Это ошибка в пусковой установке 0.12.1: https://github.com/sbt/sbt-launcher-package/issues/34
Я попробовал запустить проект scala с аргументами CLI, используя sbt launcher version 0.12.1. Он работает нормально, когда запускается из приглашения scala:
$ sbt
[info] (...)
> run sth
(...)
[success] Total time: 0 s, completed Nov 9, 2012 3:04:47 PM
Но когда я хочу запустить его из оболочки, например этот ответ, я получаю сообщение об ошибке:
$ sbt "run sth"
[info] (...)
you need to provide source file name
[success] Total time: 0 s, completed Nov 9, 2012 3:07:07 PM
[error] Not a valid command: sth (similar: set, last, shell)
[error] Expected '/'
[error] Expected ':'
[error] Not a valid key: sth (similar: test, state, watch)
[error] sth
[error] ^
И информация о том, что вам нужно предоставить имя исходного файла, предоставляется моим проектом scala, чтобы указать, что main не получил никаких аргументов CLI.
Это что-то, что работало в предыдущей версии sbt (в упомянутом вопросе), или я делаю что-то неправильно?
Это ошибка в пусковой установке 0.12.1: https://github.com/sbt/sbt-launcher-package/issues/34
Проблема может заключаться в том, как передать аргументы в файл запуска sbt
на Java. В моем случае это:
java -Xmx4096M -jar `dirname $0`/sbt-launch_0.12.1.jar "[email protected]"
И я только что подтвердил: он работает с 0.12 и 0.12.1. Например, для программы, которая просто печатает свои аргументы, я получаю:
$ sbt "run-main SomeMain blah blah"
Outut:
[blah, blah]
Используя run-main
, вы также можете избежать возможности того, что sbt каким-то образом не видит вашу основную функцию.