我有这样的代码,它是从sbt 100%运行,执行sbt test,但是在Intellij中抛出一个编译错误。
import org.scalatest.{BeforeAndAfter, FunSuite, GivenWhenThen}
class SimpleTest extends FunSuite with GivenWhenThen with BeforeAndAfter {
test("Simple Test") {
Given("Why this error?")
assert("ok" === "ok")
}
}错误是:
Error:(5, 10) could not find implicit value for parameter pos: org.scalactic.source.Position
Given("Why this error?")
Error:(5, 10) not enough arguments for method Given: (implicit pos: org.scalactic.source.Position)Unit.
Unspecified value parameter pos.
Given("Why this error?")
Error:(6, 11) could not find implicit value for parameter prettifier: org.scalactic.Prettifier
assert("ok" === "ok")
Error:(6, 11) macro applications do not support named and/or default arguments
assert("ok" === "ok")
Error:(6, 11) not enough arguments for macro method assert: (implicit prettifier: org.scalactic.Prettifier, implicit pos: org.scalactic.source.Position)org.scalatest.Assertion.
Unspecified value parameters prettifier, pos.
assert("ok" === "ok")
Error:(4, 23) could not find implicit value for parameter pos: org.scalactic.source.Position
test("Simple Test") {按建议在刷新和重新加载之后:
Error:(6, 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("ok" === "ok")我正在使用:
IntelliJ IDEA 2016.3.2
Build #IU-163.10154.41, built on December 21, 2016
scalaVersion := "2.11.0",
"org.scalactic" %% "scalactic" % "3.0.1" % "test",
"org.scalatest" %% "scalatest" % "3.0.1" % "test"注意:-使用File -> Invalidate Caches / Restart不会修复问题--重现错误的示例:吉特卜的例子
发布于 2017-01-10 12:07:56
在反应的底部找到解决办法。;)
此问题与以下错误列表有关:
问题是,项目中存在依赖关系,它们使用的是其他版本的scalatest和scalactic,使用的是测试范围。
IntelliJ的思想是将编译范围和测试范围混为一谈,但是它是正确工作的。IntelliJ Idea团队在BUG中说,他们正在处理这个问题。
目前,我的解决办法是使用其他库用于测试的相同的旧版本。
备注:
@贾斯汀-凯瑟被指派并致力于修复这一问题。谢谢! 在最新的预览中,与Scala插件相关的许多改进。 再现错误的示例:https://github.com/angelcervera/idea-dependencies-bug
很少有解决办法:
发布于 2017-01-25 17:54:49
有些依赖项可能是过渡的,在编译范围中包含了不兼容的scope或Scalatest版本,这些版本也包含在测试范围中。
您可以在Project / Modules / Dependencies选项卡下的Project中检查这一点,并使用依赖关系图插件更仔细地分析它。
但是,IntelliJ不执行依赖驱逐(问题),这会在从IDE编译时引起额外的问题。如果sbt依赖关系图显示冲突版本被逐出,那么它可能就是这个问题的一个实例。
解决办法:当您发现冒犯的传递依赖时,将其排除在build.sbt中的根依赖项之外。例如:
"org.apache.spark" %% "spark-core" % "2.1.0" % "provided" exclude("org.scalatest", "scalatest_2.11")发布于 2017-06-01 13:45:54
不确定这是否是IDE错误,但对我来说,将IDE升级到最新版本并没有任何帮助。在浪费了几个小时之后,这里是我解决这个错误的方法。上面写着。
could not find implicit value for parameter prettifier: org.scalactic.Prettifier解决办法:
In IntelliJ press Ctrl+Alt+Shift+S -> Modules -> Dependencies -> Search for
org.scalactic:3.0.0.jar (Test scope) and most probably there would be
another version as 2.x.x in compile scope. Right click on 2.x.x and select
EDIT and then choose the 3.0.0 version in compile scope, and apply new
settings.
P.S. Depending on your case there may be only one entry but make sure you
use 3.0.0 in compile scope to get rid of that weird error.https://stackoverflow.com/questions/41564915
复制相似问题