线程“main”中的异常java.lang.NoClassDefFoundError:org / rogach / scallop / ScallopConf

问题描述 投票:1回答:1

由于我想在命令行界面中执行我的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
1个回答
1
投票

要在命令行界面中执行scala项目生成的jar,可以使用sbt插件来组装包含库/依赖项的fat-jar。拥有这样的jar你可以通过java -jar ...运行你的应用程序

有几个SBT插件用于构建一个胖罐。也许最容易的就是sbt-assembly。

  1. 将此插件添加到文件project/plugins.sbt(如果需要,创建此文件):addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")
  2. 现在使用sbt构建一个胖罐:
sbt assembly
  1. 然后通过java -jar YouMainClass运行

另一个选择是使用纯sbt使用命令sbt run运行Main类,然后你真的需要构建一个fat-jar。

© www.soinside.com 2019 - 2024. All rights reserved.