webentwicklung-frage-antwort-db.com.de

Fehler bei der Skalierung des Tests in IDEA

Ich versuche, ein Scala-Projekt zu kompilieren, das scalatest enthält. Es kompiliert normal auf sbt

sbt
> compile
> test:compile

, aber wenn ich versuche, es mit IDEA zu erstellen, wird der folgende Fehler angezeigt:

Error:(37, 11) exception during macro expansion: 
Java.lang.NoSuchMethodError: org.scalactic.BooleanMacro.genMacro(Lscala/reflect/api/Exprs$Expr;Ljava/lang/String;Lscala/reflect/api/Exprs$Expr;)Lscala/reflect/api/Exprs$Expr;
at org.scalatest.AssertionsMacro$.assert(AssertionsMacro.scala:34)
assert((ElementMeasures.baseElementDistance(mEl1, mEl2) - 0.33333).abs < 0.001)
      ^

für jede assert funktion im test.

Die build.sbt-Datei enthält Folgendes:

name := "ner-scala"
organization := "ml.generall"
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.8"
libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.0"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"
...
14
generall

Dies kann auch bedeuten, dass Sie mehr als eine Version von scalatest registriert haben. Ich bin auf das gleiche Problem mit Kompilierungsfehlern beim Aktivieren gestoßen

15
Alexey

Ich bin auf dasselbe Problem gestoßen, und wie Alexey beschrieben hat (er sollte das Upvote bekommen, aber ich habe nicht genug Reputation, um zu stimmen oder zu kommentieren - danke Alexey), scheint es, dass mehrere Versionen von scalatest in meinem Projekt vorhanden waren . Ich konnte das Problem beheben, indem ich den älteren Scalatest aus der Bibliothek ausschloss, die ihn eingespielt hat (und bitte beachte, dass für den Ausschluss die Scala-Binärversion angegeben werden muss, z. B. _2.11 usw.!):

...exclude("org.scalatest", "scalatest_2.11")

Es gab auch eine Warnung im Ereignisprotokoll vor dem Ausschluss:

SBT project import
[warn] Multiple dependencies with the same organization/name but different versions.
[warn]  * org.scalatest:scalatest_2.11:(2.2.6, 3.0.1)
14
medale

Ich denke, Ihre IntelliJ fehlt Bibliothek scalatest

gehen Sie von IntelliJ zu Project Structure -> Project Settings -> Libraries -> + symbol -> From Maven -> suchen Sie nach scalatest mit der richtigen Version

nach dem Hinzufügen der Bibliothek scalatest für IntelliJ sollte der Fehler assert verschwinden.

Dies ist keine garantierte Lösung, probieren Sie es einfach aus :)

1
keypoint

Für mich wurde dieses Problem durch Änderung behoben

"org.scalactic" %% "scalactic" % "3.0.1",
"org.scalatest" %% "scalatest" % "3.0.1" % test

Zu

"org.scalactic" %% "scalactic" % "3.0.1",
"org.scalatest" %% "scalatest" % "3.0.1"
0