27

我尝试使用 sbt 启动器版本 0.12.1 使用 CLI 参数运行我的 scala 项目。从 scala 提示符运行时它工作正常:

$ sbt
[info] (...)
> run sth
(...)
[success] Total time: 0 s, completed Nov 9, 2012 3:04:47 PM

但是,当我想从 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]    ^

我的 scala 项目给出了“您需要提供源文件名”信息,以表明 main 没有获得任何 CLI 参数。

它是在以前版本的 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 回答