最近,specs2被更新为2.4版本,它使用的是scalaz 7.1而不是现在的7.0.x。一旦我在play!2.3项目中更新了我的specs2依赖项以使用Version2.4,所有测试都会失败,但有以下例外:
[error] Uncaught exception when running ...Spec: java.lang.In
compatibleClassChangeError: Found class scalaz.syntax.FunctorOps, but interface
was expected
sbt.ForkMain$ForkError: Found class scalaz.syntax.FunctorOps, but interface was
expected
at org.specs2.specification.SpecificationStructure$.createSpecificationEither(BaseSpecification.scala:119)
at org.specs2.runner.SbtRunner.org$specs2$runner$SbtRunner$$specificationRun(SbtRunner.scala:73)
at org.specs2.runner.SbtRunner$$anonfun$newTask$1$$anon$5.execute(SbtRunner.scala:59)
at sbt.ForkMain$Run$2.call(ForkMain.java:294)
at sbt.ForkMain$Run$2.call(ForkMain.java:284)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)以前似乎没有人犯过这个错误。至少我无法在specs2和play项目的问题跟踪系统中找到它。
发布于 2015-05-19 22:51:59
我让它在播放2.3.8与此设置。
"org.scalaz" %% "scalaz-core" % "7.1.1",
"com.typesafe.play" %% "play-test" % "2.3.8" % "test" excludeAll(
ExclusionRule(organization = "org.specs2")
),
"org.specs2" %% "specs2-core" % "3.5" % "test",
"org.specs2" %% "specs2-junit" % "3.5" % "test",
"org.specs2" %% "specs2-mock" % "3.5" % "test"发布于 2014-08-25 21:50:32
"com.typesafe.play" %% "play-test" % "2.3.3"依赖于specs2 2.3.12,specs2 2.3.12依赖于scalaz 7.0.6
您可以/不应该将它们放在一起使用。因为7.0.6和7.1.0是二进制不兼容的。
如果您想同时使用play2和Scalaz7.1,我认为有一些解决方案
"play-test"依赖项libraryDependencies ~= { _.filterNot(m => m.organization == "com.typesafe.play" && m.name == "play-test") }"play-test"重建https://github.com/playframework/playframework/tree/2.3.3/framework/src/play-test/src/main/scala/play/api/test模块https://stackoverflow.com/questions/25280288
复制相似问题