我正在尝试编译包含scalatest的Scala项目。它在sbt上编译normal
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"
...发布于 2016-11-23 18:54:42
这也可能意味着您注册了不止一个版本的scalatest。我在assert上遇到了几乎相同的编译时错误
发布于 2016-11-27 09:08:01
我刚刚遇到了同样的问题,正如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)发布于 2016-10-04 01:37:25
我认为您的IntelliJ缺少库scalatest
在IntelliJ中,转至Project Structure -> Project Settings -> Libraries -> + symbol -> From Maven -> search for scalatest with correct
为IntelliJ添加scalatest库后,assert错误应该会消失。
这不是一个有保证的解决方案,请试一试:)
https://stackoverflow.com/questions/39812037
复制相似问题