27

sbtランチャーバージョン0.12.1を使用して、CLI引数を使用して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]    ^

そして、「ソースファイル名を提供する必要があります」という情報は、mainがCLI引数を取得しなかったことを示すために私のscalaプロジェクトによって提供されます。

以前のバージョンのsbt(参照された質問)で機能したものですか、それとも私は何か間違ったことをしていますか?

4

2 に答える 2

31

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 が何らかの形でメイン関数を認識しない可能性を回避することもできます。

于 2012-11-09T15:25:45.810 に答える
7

これは 0.12.1 ランチャーのバグです: https://github.com/sbt/sbt-launcher-package/issues/34

于 2012-11-09T16:05:46.293 に答える