1. ホーム
  2. scala

[解決済み] java.lang.NoClassDefFoundError: scala/Product$class

2022-01-28 09:55:46

質問

私は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

私のコードは以下の通りです。

フィルターチェック.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
  }

}

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

どなたか、問題を見つけるのを手伝っていただけないでしょうか。事前にありがとうございます

解決方法を教えてください。

あなたのsbtのビルドファイルが正しくありません。あなたのscalaのバージョンは2.12.xですが、あなたはscalaバージョン2.11でコンパイルされたライブラリを使っています。

ノート : 2.12 バージョンの scala では 2.x バージョンがサポートされなくなったので、scalatest のバージョンを変更しました。

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
)

を忘れないようにしましょう。 reload , cleancompile をsbtコンソールに入力し、クリーンコンパイルを開始します。