我尝试使用sbt启动器版本0.12.1使用CLI参数运行我的scala项目.从scala提示符运行时它可以正常工作:
$ sbt
[info] (...)
> run sth
(...)
[success] Total time: 0 s, completed Nov 9, 2012 3:04:47 PM
Run Code Online (Sandbox Code Playgroud)
但是当我想从shell运行它时,根据这个答案,例如,我收到一个错误:
$ 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] ^
Run Code Online (Sandbox Code Playgroud)
并且我的scala项目给出了"您需要提供源文件名"信息,以指示main没有获得任何CLI参数.
它是在先前版本的sbt中工作的(在引用的问题中),还是我做错了什么?
blu*_*e10 31
问题可能是您将sbt启动文件中的参数传递给Java的方式.在我的情况下它是:
java -Xmx4096M -jar `dirname $0`/sbt-launch_0.12.1.jar "$@"
Run Code Online (Sandbox Code Playgroud)
我刚刚确认:它适用于0.12和0.12.1.例如,对于只打印其参数的程序,我得到:
$ sbt "run-main SomeMain blah blah"
Outut:
[blah, blah]
Run Code Online (Sandbox Code Playgroud)
通过使用run-main你也可以避免sbt以某种方式看不到你的主要功能的可能性.