6

最近,specs2更新到了 2.4 版本,现在使用的是 scalaz 7.1 而不是7.0.x。一旦我在我的游戏中更新了我的 specs2 依赖项!2.3 项目使用 2.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 项目的问题跟踪系统中找到它。

4

2 回答 2

5

"com.typesafe.play" %% "play-test" % "2.3.3"取决于 specs2 2.3.12,而 specs22.3.12取决于 scalaz7.0.6

您可以/不应该一起使用这些。因为 scalaz7.0.67.1.0是二进制不兼容的。

如果你想同时使用 play2 和 scalaz 7.1,我认为有一些解决方案

于 2014-08-25T21:50:32.040 回答
5

我使用此设置使其在 Play 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"
于 2015-05-19T22:51:59.530 回答