java.lang.NoClassDefFoundError: scala/Product$class

Posted

技术标签:

【中文标题】java.lang.NoClassDefFoundError: scala/Product$class【英文标题】: 【发布时间】:2017-07-18 18:59:46 【问题描述】:

我是 scala 的新手,我正在尝试一些示例代码进行测试。但是,当我运行测试代码时,我遇到了一些问题。当我运行测试时,我得到一个错误

[trace] Stack trace suppressed: run last test:executeTests for the full output.
[error] (test:executeTests) 
[error] Total time: 3 s, completed Feb 27, 2017 6:57:15 PM

我的代码如下

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 FilterChecker(filter : String) 

  def matches(content : String) = content.contains(filter);

  def findMatchedFiles(fileObjects : List[FileObject]) = 
    for(fileObject <- fileObjects if(matches(fileObject.name)))
      yield fileObject
  


文件对象

class FileObject(val name: String) 


构建文件如下:

name := "testScalaProject"

version := "1.0"

scalaVersion := "2.12.1"

// https://mvnrepository.com/artifact/org.scala-js/scalajs-test-interface_2.12
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")

有人可以帮我找出问题所在吗?提前致谢

【问题讨论】:

【参考方案1】:

您的 sbt 构建文件不正确。您的 scala 版本是 2.12.x,但您使用的是在 scala 版本 2.11 中编译的库。使用如下所示的 sbt 设置

注意:我更改了 scalatest 的版本,因为 2.12 版本的 scala 不再支持 2.x 版本

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
)

记得在你的 sbt 控制台中执行reloadcleancompile 以开始干净编译

【讨论】:

不适合我.. 我的测试 Scala 版本是“2.12.8”代码构建成功但是当我尝试在我的另一个项目上使用这个 jar 时它给了我上面的错误。我的另一个项目 scala 版本是 "2.12.6" 。我已将其设置为相同的版本,但没有成功,仍然显示错误NoClassDefFoundError: scala/Product$class,请您帮我解决我错过的问题。【参考方案2】:

专门将 scala-reflect 添加到您的 pom 或相应地更改 sbt:

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-reflect</artifactId>
    <version>$scala.version</version>
</dependency>

【讨论】:

以上是关于java.lang.NoClassDefFoundError: scala/Product$class的主要内容,如果未能解决你的问题,请参考以下文章