1

Test project 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"
)

Test Project plugins.sbt

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

This is my Test application sbt configuration file and when I run sbt package it will create a jar file for me then I have to use that jar in my other project.

Other project sbt file

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
  )
}

Other Project 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")

As I'm new in Scala and I don't know what i did wrong in that as when i put my test scala jar into another project It will give me the error.

Error:-

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)

Can anyone please help me on this as I'm new also I have see this one java.lang.NoClassDefFoundError: scala/Product$class but this not help me so I have put my problem here.

Try with both the way like uploaded jar directly into the code and pull by S3 but the error is still exists.

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

NOTE:- I have Set the same scala version in my both the application "2.12.6" but issue is still exists.

Dmytro Mitin
  • 48,194
  • 3
  • 28
  • 66
Arpit Jain
  • 1,217
  • 8
  • 27

0 Answers0