I am new to scala and I am trying out few sample codes for testing. However I am facing some issues when I run the test code. When I run the test, I am getting an error
[trace] Stack trace suppressed: run last test:executeTests for the full output.
[error] (test:executeTests) java.lang.NoClassDefFoundError: scala/Product$class
[error] Total time: 3 s, completed Feb 27, 2017 6:57:15 PMMy code is as follows
FilterChecks.scala
class filterChecks extends FlatSpec { "Filter checker passed a filename which is present in directory" should "return file name" in { val matchingFileName = new FileObject("match") val listOfFiles = List(new FileObject("random"), matchingFileName) val matchedFiles = new FilterChecker("match").findMatchedFiles(listOfFiles) assert(matchedFiles == List(matchingFileName)) }
}FilterChecker Class
class FilterChecker(filter : String) { def matches(content : String) = content.contains(filter); def findMatchedFiles(fileObjects : List[FileObject]) = { for(fileObject <- fileObjects if(matches(fileObject.name))) yield fileObject }
}FileObject
class FileObject(val name: String) {
}The build file is as follows:
name := "testScalaProject"
version := "1.0"
scalaVersion := "2.12.1"
//
libraryDependencies ++= Seq("org.scala-js" % "scalajs-test-interface_2.12" % "0.6.14", "org.scalatest" % "scalatest_2.11" % "2.2.5", "com.novocode" % "junit-interface" % "0.11", "org.scala-lang" % "scala-library" % "2.12.1")Could someone help me out in finding the issue . Thanks in advance
2 Answers
your sbt build file is not right. your scala version is 2.12.x but you are using libraries compiled in scala version 2.11. use the sbt settings shown below
note: I changed the version of scalatest as 2.x versions are no longer supported for 2.12 version of scala
scalaVersion := "2.12.1"
libraryDependencies ++= Seq( "org.scala-js" %% "scalajs-test-interface" % "0.6.14", "org.scalatest" %% "scalatest" % "3.0.1", //version changed as these the only versions supported by 2.12 "com.novocode" % "junit-interface" % "0.11", "org.scala-lang" % "scala-library" % scalaVersion.value
)remember to do reload, clean and compile in your sbt console to start clean compile
specifically add scala-reflect to your pom or change sbt accordingly:
<dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-reflect</artifactId> <version>${scala.version}</version>
</dependency>