0

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

我完全不知道为什么会这样?我缺少哪个附加库?

4

3 回答 3

3

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

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

于 2013-12-19T19:28:09.317 回答
0

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

于 2013-12-19T19:46:36.643 回答
0

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

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

于 2013-12-20T14:06:30.080 回答