2013-12-19 6 views
0

У меня есть веб-приложение рамочное Play на основе, которая имеет следующий определенный в файле build.sbt:Касба Scala Runtime Ошибка

.... 
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

Какая версия scala? – smk

+0

Это 2.10.3, что я использую из своего IntelliJ. – sparkr

ответ

3

Вы не можете смешивать основные SCALA версии (см, Касба артефакт скомпилированные против Скале 2.9. *, В то время как scala_test для 2.10. *, И вы говорите, вы используете 2.10 в IntelliJ).

Ошибка говорит о том, что компилятор не может найти класс, который был вырезан из библиотеки scala с момента 2.9. * Раз и решение должно выбрать правильную версию scala (любые 2.10. * Подойдут).

+0

Должен ли я затем использовать и использовать Scala 2.9? Как использование ScalaTest 2.10 может повлиять на это? Я сомневаюсь, что есть версия Casbah для 2.10. Я бы посмотрел, доступен ли он. – sparkr

+0

Спасибо за предложение. Я изменил зависимость к драйверу Casbah следующим образом: «org.mongodb»% «casbah_2.10"% "2.5.1", и это сработало! – sparkr

0

Автор салата здесь. Решение состоит в том, чтобы исправить ваши отпечатки. Последний стабильный выпуск Salat - 1.9.4, и это зависит от Casbah 2.6.4 - оба доступны для 2.9 и 2.10.

+0

'' org.mongodb "%%" casbah "%" 2.6.4 "и' "com.novus" %% "salat-core"% "1.9.4" 'должен исправить файл сборки. – Ross

+0

Позвольте мне попробовать! – sparkr

+0

Это не сработало! sbt.ResolveException: нерешенная зависимость: org.mongodb # casbah; 2.6.4: не найден – sparkr

0

Вместо того, чтобы использовать драйвер casbah непосредственно для игры, я снова вернулся к использованию плагина под названием play-salat (https://github.com/leon/play-salat).

В настоящее время я использую «se.radley»% «play-plugins-salat_2.10"% "1.3.0" и хорошо работает в Play 2.2.