我有一个基于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)
........
........
我完全不知道为什么会这样?我缺少哪个额外的库?
答案 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中运行良好。