由于我想在命令行界面中执行由scala项目生成的jar,因此出现以下问题:
val()
尽管在依赖项文件中,我提到了 scallop 依赖项,
Exception in thread "main" java.lang.NoClassDefFoundError: org/rogach/scallop/ScallopConf
我的 build.sbt 文件如下:
import sbt._
object Dependencies {
lazy val betterFiles = "com.github.pathikrit" %% "better-files" % "3.7.0"
lazy val scalaz = "org.scalaz" %% "scalaz-core" % "7.2.27"
lazy val scallop = "org.rogach" %% "scallop" % "3.1.5"
// -- Logging
lazy val scalaLogging = "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2"
lazy val slf4jBackend = "org.slf4j" % "slf4j-simple" % "1.7.26"
// -- Testing
lazy val scalaTest = "org.scalatest" %% "scalatest" % "3.0.5"
}
如果您的想法可以解决我的问题,请帮助!
非常感谢
答案 0 :(得分:1)
要在命令行界面中执行scala项目生成的jar,可以使用sbt插件来组装一个胖jar,包括您的库/依赖项。有了这样的jar,您将可以通过java -jar ...
有几个用于构建胖子的SBT插件。也许最简单的方法是sbt-assembly。
project/plugins.sbt
中(如果需要,请创建此文件):
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")
sbt assembly
java -jar YouMainClass
另一种选择是使用纯sbt通过命令sbt run
运行Main class,那么您确实需要构建一个胖子。