Подтвердить что ты не робот

Ошибка в компиляции скалатеста в IDEA

Я пытаюсь скомпилировать проект Scala, который содержит scalatest. Он компилирует normal на sbt

sbt
> compile
> test:compile

но когда я пытаюсь построить его с помощью IDEA, он показывает следующую ошибку:

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

для каждой assert функции в тесте.

Файл build.sbt содержит следующее:

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"
...
4b9b3361

Ответ 1

Это также может означать, что у вас есть несколько версий скалята. Я столкнулся с такой же проблемой с ошибкой времени компиляции при утверждении

Ответ 2

Я просто столкнулся с той же проблемой, о чем говорил Алексей (он должен получить надпись, но у меня нет достаточной репутации для продвижения или комментария - спасибо Алексею), похоже, что это было вызвано наличием нескольких версий scalatest в моем проекте, Я смог исправить это, исключив старый скаляр из библиотеки, которая привела его (и, пожалуйста, обратите внимание, что исключение должно указывать двоичную версию scala, например _2.11 и т.д.!):

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

Также было предупреждение в журнале событий до исключения:

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)

Ответ 3

Я думаю, у вашего IntelliJ отсутствует библиотека scalatest

из IntelliJ, перейдите в Project StructureProject SettingsLibraries+ символ → From Mavenscalatest поиск для scalatest с правильной версией

после добавления библиотеки scalatest для IntelliJ, ошибка assert должна исчезнуть.

Это не гарантированное решение, просто попробуйте :)

Ответ 4

Для меня эта проблема была решена путем изменения

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