【问题标题】:Mysterious Scalaz NoClassDefFoundError and scalaz.InvariantFunctor errors神秘的 Scalaz NoClassDefFoundError 和 scalaz.InvariantFunctor 错误
【发布时间】:2014-09-09 00:48:30
【问题描述】:

我有以下 build.sbt,并且正在运行带有 IntelliJ 管理 sbt 的 Scala 2.10.4,并基于 sbt 构建文件刷新项目。一切正常,直到我添加了 scalaz-streams - 我似乎无法使用scalaz.concurrent.Task 而不遇到以下错误之一:


// build.sbt

name := "ScalazStreamsAkka"

version := "1.0"


resolvers += "Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases"

resolvers ++= Seq(
  Resolver.sonatypeRepo("releases"),
  Resolver.sonatypeRepo("snapshots")
)

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"

libraryDependencies += "org.scalaz" %% "scalaz-concurrent" % "7.1.0"

//libraryDependencies += "org.scalaz.stream" %% "scalaz-stream" % "0.5a"

libraryDependencies += "org.typelevel" %% "scodec-core" % "1.3.0"

libraryDependencies ++= Seq(
  "com.chuusai" % "shapeless_2.10.4" % "2.0.0"
)

有了这个 build.sbt,就会出现这个错误:

scala> import scalaz.concurrent.Task
import scalaz.concurrent.Task

scala> Task
java.lang.IncompatibleClassChangeError: Class scalaz.concurrent.Task$$anon$1 does not        implement the requested interface scalaz.InvariantFunctor

如果我取消注释“scalaz-concurrent”,则会出现同样的错误:

scala> import scalaz.concurrent.Task
import scalaz.concurrent.Task

scala> Task
java.lang.IncompatibleClassChangeError: Class scalaz.concurrent.Task$$anon$1 does not     implement the requested interface scalaz.InvariantFunctor`

如果我尝试运行这些最新示例...

val ones: Process[Task,Int] = Process.constant(1)

/* A stream which emits `0, 1, 2 ... 99`. */
val zeroTo100: Process[Task,Int] = Process.range(0,100)

同样的错误也会发生。


其他时候,我遇到了这个错误:

scala>     val expensiveInt: Task[Int] = Task { 41 + 1 }
java.lang.NoClassDefFoundError: Could not initialize class scalaz.concurrent.Task$

有谁知道我如何使用 scalaz 流而不会遇到这些奇怪的错误? 我正在尝试将 scalaz-streams 与 akka actor 和 futures 以及可能的 shapeless 和 scodec 一起使用。

【问题讨论】:

  • 注意:已发布的 build.sbt,未注释 scalaz-stream,可在 SBT 控制台上正常工作。也许 Intellij 项目中的某些东西正在引入 scalaz 7.0.*?

标签: scala intellij-idea akka scalaz scalaz-stream


【解决方案1】:

我自己修好了。解决的办法是新建一个intellij项目,去掉shapeless + scodec,让akka依赖由SBT(通过添加libraryDependency +=)解决,而不是intellij的maven组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2017-04-20
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多