首页 > 解决方案 > 错误:- java.lang.NoClassDefFoundError: scala/Product$class

问题描述

测试项目 Build.sbt

scalaVersion := "2.12.8"
crossScalaVersions := Seq("2.11.12", "2.12.8")

val scalaTestVersion = "3.0.5"
val rocksDBVersion = "5.17.2"
val kafkaVersion = "2.2.0"

lazy val deps = Seq(
//  "javax.ws.rs" % "javax.ws.rs-api" % "2.1" jar(),
  "org.apache.kafka" % "kafka-clients" % kafkaVersion,
  "org.apache.kafka" % "kafka-clients" % kafkaVersion classifier "test",
  "org.apache.kafka" % "kafka-streams" % kafkaVersion,
  "org.apache.kafka" % "kafka-streams" % kafkaVersion classifier "test",
  "org.apache.kafka" %% "kafka" % kafkaVersion,
  "org.apache.kafka" % "kafka-streams-test-utils" % kafkaVersion,
  "org.scalatest" %% "scalatest" % scalaTestVersion % "test",
  "org.rocksdb" % "rocksdbjni" % rocksDBVersion % "test"
)

测试项目 plugins.sbt

addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.8")

这是我的测试应用程序 sbt 配置文件,当我运行sbt package它时,它会为我创建一个 jar 文件,然后我必须在我的其他项目中使用该 jar。

其他项目 sbt 文件

scalaVersion := "2.12.6"
object Dependencies {
  val deps = Seq(
    "org.json4s" %% "json4s-native" % "3.5.3",
    "ch.qos.logback" % "logback-classic" % "1.2.3",
    "cool.graph" % "cuid-java" % "0.1.1",
    "org.apache.kafka" % "kafka-streams" % "2.2.0",
    "com.typesafe" % "config" % "1.3.3",
    "org.scalaz" %% "scalaz-core" % "7.2.20",
    "org.apache.commons" % "commons-lang3" % "3.8.1",

    //Test
    "org.scalatest" %% "scalatest" % "3.0.4" % Test,
    "org.mockito" % "mockito-all" % "1.10.19" % Test,
    "com.abc" %% "kafka-streams-test-kit" % "2.2.0" % Test
  )
}

其他项目 plugins.sbt

addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.5.0")
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.8")

因为我是 Scala 的新手,我不知道我做错了什么,因为当我将我的测试 scala jar 放入另一个项目时它会给我错误。

错误:-

java.lang.NoClassDefFoundError: scala/Product$class
[error]         at com.shepherd.kafka.streams.test.kit.MockedStreams$Builder.<init>(MockedStreams.scala:17)
[error]         at com.shepherd.kafka.streams.test.kit.MockedStreams$.apply(MockedStreams.scala:15)
[error]         at com.shepherd.integration.WindowedThresholdSpec.$anonfun$new$4(WindowedThresholdSpec.scala:38)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)

任何人都可以帮我解决这个问题,因为我是新手,我也看到了这个java.lang.NoClassDefFoundError: scala/Product$class但这对我没有帮助,所以我把我的问题放在这里。

尝试两种方式,例如将jar直接上传到代码中并通过S3拉取,但错误仍然存​​在。

resolvers += "Java.net Maven2 Repository" at "https://repo1.maven.org/maven2/"
resolvers += "S3" at "https://s3-eu-west-1.amazonaws.com/com.abc/" -> Test jar file

注意:-我在我的两个应用程序“2.12.6”中设置了相同的 scala 版本,但问题仍然存在。

标签: scalaapache-kafkasbtscalatest

解决方案


推荐阅读