scalaプロジェクトをCLI引数で実行し、sbtランチャーバージョン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] ^
「ソースファイル名を指定する必要があります」という情報は、my scalaプロジェクトによって提供され、メインが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 "$@"
そして私はちょうど確認しました:それは0.12と0.12.1の両方で動作します。たとえば、引数を出力するだけのプログラムの場合、次のようになります。
$ sbt "run-main SomeMain blah blah"
Outut:
[blah, blah]
run-main
を使用すると、sbtが何らかの理由でメイン関数を認識しない可能性も回避できます。