首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IDEA中的scalatest编译出错

IDEA中的scalatest编译出错
EN

Stack Overflow用户
提问于 2016-10-02 06:27:27
回答 7查看 7.6K关注 0票数 19

我正在尝试编译包含scalatest的Scala项目。它在sbt上编译normal

代码语言:javascript
复制
sbt
> compile
> test:compile

,但当我尝试使用IDEA构建它时,它显示以下错误:

代码语言:javascript
复制
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文件包含以下内容:

代码语言:javascript
复制
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"
...
EN

回答 7

Stack Overflow用户

发布于 2016-11-23 18:54:42

这也可能意味着您注册了不止一个版本的scalatest。我在assert上遇到了几乎相同的编译时错误

票数 20
EN

Stack Overflow用户

发布于 2016-11-27 09:08:01

我刚刚遇到了同样的问题,正如Alexey所描述的(他应该获得赞成票,但我没有足够的声誉来获得赞成票或评论-谢谢Alexey),这似乎是由于我的项目中有多个版本的scalatest造成的。我可以通过从引入它的库中专门排除较旧的scalatest来修复它(请注意,排除需要指定scala二进制版本,例如_2.11等!):

代码语言:javascript
复制
...exclude("org.scalatest", "scalatest_2.11")

在排除之前,事件日志中也出现了警告:

代码语言:javascript
复制
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)
票数 16
EN

Stack Overflow用户

发布于 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错误应该会消失。

这不是一个有保证的解决方案,请试一试:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39812037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档