由于我想在命令行界面中执行我的scala项目生成的jar,因此出现以下问题:Exception in thread "main" java.lang.NoClassDefFoundError: org/rogach/scallop/ScallopConf
虽然在依赖文件中我提到扇贝依赖如下
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"
}
我的build.sbt文件如下:
import Dependencies._
ThisBuild / scalaVersion := "2.12.5"
ThisBuild / sbtVersion := "1.2.6"
ThisBuild / version := "0.1.0-SNAPSHOT"
lazy val root = (project in file("."))
.settings(
name := "phenix-challenge",
libraryDependencies ++= Seq(
betterFiles,
scalaz,
scallop,
scalaLogging,
slf4jBackend % Runtime,
scalaTest % Test
)
)
如果您有想法可以解决我的问题,请帮助!
提前谢谢了
要在命令行界面中执行scala项目生成的jar,可以使用sbt插件来组装包含库/依赖项的fat-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类,然后你真的需要构建一个fat-jar。