scala - 线程 "main"java.lang.NoClassDefFoundError : org/rogach/scallop/ScallopConf 中的异常

标签 scala jar sbt

因为我想在命令行界面中执行我的 scala 项目生成的 jar,我遇到了以下问题: 线程“main”中的异常 java.lang.NoClassDefFoundError: org/rogach/scallop/ScallopConf

尽管在依赖文件中我提到了 scallop 依赖如下

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 插件可以构建一个 fat-jar。也许最简单的是 sbt-assembly。

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

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

关于scala - 线程 "main"java.lang.NoClassDefFoundError : org/rogach/scallop/ScallopConf 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55328335/

相关文章:

deployment - 打包和部署 Scala 应用程序

scala - 带有 Scala 2.10 的lift-json

scala - 我应该在 Spark sql 中使用哪一个来获得更好的性能,是从 Parquet 文件读取数据还是从数据库读取数据?

scala - 使用 scala 插件在 IntelliJ IDEA 上导致实例崩溃

java - 哪个联合效率更高: List/HashSet

scala - 在 Delite 中编译我的第一个 DSL

postgresql - 在服务器端使用 over table 计算表列

Java 7 |我们可以并行下载 applet JAR 吗?

java - 当 .jar 文件传输到另一台计算机时,文件编写器不工作

java - jar 作为 ubuntu 上的守护进程使用 100% cpu