Casbah Scala运行时错误

时间:2013-12-19 19:09:47

标签: scala casbah salat

我有一个基于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)
        ........
        ........

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

3 个答案:

答案 0 :(得分:3)

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

错误说,编译器找不到从scala库中删除的类,因为2.9。*次,解决方法是选择适当的scala版本(任何2.10。*都适合)。

答案 1 :(得分:0)

Salat作者在这里。解决方案是修复你的deps。 Salat的最新稳定版本是1.9.4,它取决于Casbah 2.6.4 - 两者都可用于2.9和2.10。

答案 2 :(得分:0)

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

我目前使用的是“se.radley”%“play-plugins-salat_2.10”%“1.3.0”并且在Play 2.2中运行良好。