我开始使用sbt构建我的Scala代码(并处理依赖项).据我所知,如果我使用
$ sbt run <args>
Run Code Online (Sandbox Code Playgroud)
在命令行上,这将运行主项目的主类.
是否可以从命令行在任何其他项目中"运行",即不在交互式会话模式下?(我正在考虑可能看起来像$ sbt project <proj> run <args>什么的东西......)
我在交互模式下会做的是:
$ sbt
> project <projectname>
> run <args>
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我找不到任何描述此行为的文档.提示将非常感谢...
如何在ScalaJS build.sbt中设置mainClass?
目前我在build.sbt中设置了这样的主类(参见最后一行):
enablePlugins(ScalaJSPlugin)
name := "ScalaJS-Exp"
scalaVersion := "2.11.7"
libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "0.8.1"
libraryDependencies += "be.doeraene" %%% "scalajs-jquery" % "0.8.0"
jsDependencies += RuntimeDOM
skip in packageJSDependencies := false
//scalaJSStage in Global := FastOptStage
// uTest settings
libraryDependencies ++= Seq(
"com.lihaoyi" %%% "utest" % "0.3.1" % "test",
"com.lihaoyi" %%% "scalatags" % "0.5.4",
// Javascript libs
"org.webjars" % "jquery" % "1.10.2",
"org.webjars" % "jquery-ui" % "1.11.4"
)
jsDependencies ++= Seq(
"org.webjars" % "jquery" % "1.10.2" / "jquery.js",
"org.webjars" …Run Code Online (Sandbox Code Playgroud) 我有一个 fat jar,用 Scala 编写,由 sbt 打包。我需要在 AWS EMR 的 Spark 集群中使用它。
如果我手动启动集群,将 jar 复制到 master 并使用这样的命令运行 Spark-submit 作业,它的功能就很好......
spark-submit --class org.company.platform.package.SparkSubmit --name platform ./platform-assembly-0.1.0.jar arg0 arg1 arg2
Run Code Online (Sandbox Code Playgroud)
但是...如果我尝试将其作为步骤添加到 EMR 集群,则会失败。stderr 的日志看起来像这样......
Exception in thread "main" java.lang.ClassNotFoundException: package.SparkSubmit
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Run Code Online (Sandbox Code Playgroud)
我的 build.sbt 中的相关设置如下所示......
lazy val root = (project in file(".")).
settings(
name := "platform",
version := "0.1.0",
scalaVersion := "2.10.5", …Run Code Online (Sandbox Code Playgroud)