web-dev-qa-db-ja.com

IDEAでのscalatestコンパイルのエラー

Scala scalatestを含むプロジェクトをコンパイルしようとしています。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"
...
14
generall

また、scalatestの複数のバージョンが登録されていることを意味する場合もあります。アサート時のコンパイル時エラーでほぼ同じ問題が発生しました

16
Alexey

私はちょうど同じ問題に遭遇し、Alexeyが説明したように(彼は賛成票を獲得するはずですが、賛成票やコメントをするのに十分な評判がありません-ありがとうAlexey)、それは私のプロジェクトに複数のバージョンのscalatestがあることが原因のようです。私はそれを持ってきたライブラリから古い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)
15
medale

IntelliJにライブラリがないようですscalatest

intelliJから、Project Structure-> Project Settings-> Libraries-> +シンボル-> From Maven-> scalatestを検索します。正しいバージョンで

intelliJ用のscalatestライブラリを追加すると、assertエラーが消えるはずです。

これは保証された解決策ではありません。試してみてください:)

1
keypoint

Org.scalatestグループだけを除外してもうまくいきませんでした。 mvnの依存関係を分析する際に、scalactic_ {scala_binary_version}グループも除外する必要がありました。

<exclusion>
  <artifactId>scalactic_2.11</artifactId>
  <groupId>org.scalactic</groupId>
</exclusion>
0
Harsh Patil

私にとって、この問題は変更することで修正されました

"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