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