web-dev-qa-db-fra.com

Erreur sur la compilation scalatest dans IDEA

J'essaye de compiler le projet Scala qui contient scalatest. Il compile normal sur sbt

sbt
> compile
> test:compile

, mais lorsque j'essaie de le construire avec IDEA, l'erreur suivante apparaît:

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

pour chaque fonction assert testée.

Le fichier build.sbt contient les éléments suivants:

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

Cela peut également signifier que vous avez plusieurs versions de scalatest enregistrées. J'ai eu à peu près le même problème avec l'erreur de compilation lors de l'affirmation

15
Alexey

Je viens de rencontrer le même problème et, comme Alexey l'a décrit (il devrait obtenir le vote positif mais je n'ai pas assez de réputation pour le vote direct ou le commentaire - merci Alexey), il semble que cela ait été causé par l'utilisation de plusieurs versions de scalatest dans mon projet. . J'ai pu résoudre ce problème en excluant spécifiquement l'ancien scalatest de la bibliothèque qui l'a importé (et notez bien que l'exclut doit spécifier la version binaire scala, par exemple _2.11 etc.!):

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

Il y avait également un avertissement dans le journal des événements avant l'exclusion:

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

Je pense que votre bibliothèque IntelliJ est manquante scalatest

dans IntelliJ, accédez à Project Structure -> Project Settings -> Libraries -> + symbole -> From Maven -> recherchez scalatest avec la version correcte

après avoir ajouté la bibliothèque scalatest pour IntelliJ, l’erreur assert devrait disparaître.

Ce n'est pas une solution garantie, essayez-le simplement :)

1
keypoint

Pour moi, ce problème a été résolu en changeant

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

À

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