卡斯巴哈斯卡拉运行时错误



我有一个基于Play框架的webapp,它的build.sbt文件中定义了以下内容:

....
version := "1.0-SNAPSHOT"
resolvers += "Sonatype Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
resolvers += "Sonatype Releases"  at "https://oss.sonatype.org/content/groups/scala-tools"
resolvers += "Novus Releases" at "http://repo.novus.com/releases/"
libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  "com.mongodb.casbah" % "casbah_2.9.0" % "2.2.0-SNAPSHOT",
  "com.novus" %% "salat-core" % "1.9.2",
  "org.scalatest" % "scalatest_2.10" % "2.0" % "test",
  "com.typesafe" %  "config" % "1.0.2"
)
....

Scala 版本是 2.10.3,当我尝试运行单元测试时,我遇到了以下错误:

A needed class was not found. This could be due to an error in your runpath. Missing class: scala/reflect/ClassManifest
java.lang.NoClassDefFoundError: scala/reflect/ClassManifest
    at com.mongodb.casbah.Imports$.<init>(Implicits.scala:113)
    at com.mongodb.casbah.Imports$.<clinit>(Implicits.scala)
    at com.mongodb.casbah.MongoConnection.apply(MongoConnection.scala:177)
        ........
        ........

我完全不知道为什么会这样?我缺少哪个额外的库?

你不能混合主要的 scala 版本(参见,casbah 工件是针对 scala 2.9.* 编译的,而 scala_test 是针对 2.10.*,你说你在 intellij 中使用 2.10)。

该错误说,编译器找不到自 2.9.* 时代以来从 scala 库中删除的类,解决方案是选择正确的 scala 版本(任何 2.10.* 都适合)。

萨拉特的作者在这里。 解决方案是修复您的部门。 Salat 的最新稳定版本是 1.9.4,它依赖于 Casbah 2.6.4 - 两者都可用于 2.9 和 2.10。

我没有直接使用 casbah 驱动程序进行游戏,而是重新使用一个名为 play-salat (https://github.com/leon/play-salat) 的插件。

我目前使用的一个是"se.radley" % "play-plugins-salat_2.10" % "1.3.0",在 Play 2.2 中运行良好。

相关内容

  • 没有找到相关文章

最新更新