java.lang.NoClassDefFoundError:scala/Product$class

bn31dyow  于 6个月前  发布在  Scala
关注(0)|答案(3)|浏览(125)

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

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

  }
}


过滤器类

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

}


构建文件如下:

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


有人能帮我找到这个问题吗?提前感谢。

hgtggwj0

hgtggwj01#

你的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来启动干净编译

wbrvyc0a

wbrvyc0a2#

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

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

字符串

dwthyt8l

dwthyt8l3#

此问题的根本原因是:scala项目上设置的scala依赖版本与环境或系统路径上设置的scala依赖版本不同。
项目的scala版本为2.12.x,而scala版本设置的环境变量为2.11.x。
两者应同步,且应具有相同版本
重新参考截图。


的数据


相关问题