2012-04-03 3 views
1

Я получаю следующее сообщение об ошибке при попытке расширить SalatDAO или использовать терку [Т] .asObject (х):Ошибка Salat: отсутствует файл класса, необходимый для SalatDAO. ссылочный типа MongoCollection из com.mongodb.casbah.TypeImports относится к несуществующему символу

class file needed by SalatDAO is missing. reference type MongoCollection of com.mongodb.casbah.TypeImports refers to nonexisting symbol.

I 've последовал примерам Salat, но почему-то расширение SalatDAO и graters asObject не работает для меня. Я не могу найти ссылку на эту ошибку в Интернете.

Вот мой код:

import net.trevor.model.DBConnection._ 
import com.novus.salat._ 
import com.novus.salat.global._ 
import com.mongodb.casbah.Imports._ 
import com.novus.salat.dao.SalatDAO 

//error occurs on following line: 
object HandleDAO extends SalatDAO[Handle, ObjectId](DBConnection.db("Handles")){ 

     def getHandleAsDBObject(handle : Handle) : DBObject = 
     grater[Handle].asDBObject(handle) 

     def getHandleFromDBObject(dbObject : DBObject) : Handle = 
     //error occurs on following line: 
     grater[Handle].asObject(dbObject) 
} 

Я бы очень признателен за любую помощь или совет по этому вопросу. Я новичок в Scala и Mongodb.

Я компилирую с помощью sbt compile. Вот мой build.sbt

name := "handle_engine" 

version := "1.0" 

scalaVersion := "2.9.1" 

scalacOptions += "-deprecation" 

fork in run := true 


resolvers ++= Seq(
    "twitter-repo" at "http://maven.twttr.com", 
    "repo.novus rels" at "http://repo.novus.com/releases/", 
    "repo.novus snaps" at "http://repo.novus.com/snapshots/", 
    "Java.net Maven2 Repository" at "http://download.java.net/maven/2/" 
) 


libraryDependencies ++= { 
    val liftVersion = "2.4-M5" // Put the current/latest lift version here 
    Seq(
    "net.liftweb" %% "lift-webkit" % liftVersion % "compile->default", 
    "net.liftweb" %% "lift-mapper" % liftVersion % "compile->default", 
    "net.liftweb" %% "lift-amqp" % liftVersion % "compile->default", 
    "net.liftweb" %% "lift-mongodb" % liftVersion % "compile->default", 
    "net.liftweb" %% "lift-mongodb-record" % liftVersion % "compile->default", 
    "net.liftweb" %% "lift-wizard" % liftVersion % "compile->default") 
} 



libraryDependencies ++= Seq( 
    "org.eclipse.jetty" % "jetty-server" % "8.1.0.RC5", // % "compile,jetty", 
    "org.eclipse.jetty" % "jetty-servlet" % "8.1.0.RC5", // % "compile,jetty", 
    "org.mongodb" % "mongo-java-driver" % "compile->default", 
    "com.rabbitmq" % "amqp-client" % "compile->default", 
    "org.mongodb" % "casbah_2.9.0-1" % "3.0.0-M2", 
    "com.novus" % "salat-core_2.8.1" % "0.0.7", //Salat for MongoDB and Casbah 
    "org.apache.avro" % "avro" % "1.6.2", 
    "com.twitter" % "util-core_2.9.1" % "1.12.8", "com.twitter" % "util-eval_2.9.1" % "1.12.8", 
    "junit" % "junit" % "4.5" % "test->default", 
    "javax.servlet" % "servlet-api" % "2.5" % "provided->default", 
    "ch.qos.logback" % "logback-classic" % "0.9.26" % "compile->default" 
) 

seq(webSettings :_*) 

libraryDependencies += "org.mortbay.jetty" % "jetty" % "6.1.26" % "test,container" 

libraryDependencies += "org.scala-tools.testing" %% "specs" % "1.6.9" % "test" 
+0

Что такое net.trevor.model.DBConnection? И убедитесь, что com.mongb.casbah.MongoCollection находится в вашем пути к классу –

+0

@SerJ de SuDDeN. Спасибо за помощь. MongoCollection находится на пути к классам. ** DBConnection.db («Ручки») ** совпадает с ** «com.mongb.casbah.MongoConnection (хост, порт) .getDB (база данных) (« Ручки »)» ** – fin

+0

Как вы компилируете это ? Вы используете IDE или компилируете его из командной строки. Если вы делаете это в командной строке, можете ли вы также указать точные аргументы, которые используете? – Ren

ответ

1

Похоже, что вы можете быть в старой версии Salat. Попробуйте изменить вам версию следующее:

"com.novus" %% "салят-ядро" % "0.0.8-SNAPSHOT"

или

"com.novus" % «САЛАТ-core_2 .9.1 "%" 0.0.8-SNAPSHOT "

+0

Спасибо. Я обновил свой файл build.sbt, чтобы включить строку выше (попробовал оба), но я боюсь, что все равно получаю ту же ошибку. Моя версия casbah, похоже, обновлена. – fin

+0

Хмм, я пока не могу придумать ничего другого, кроме того, что Salat еще не доступен для сборки Casbah 3. Можете ли вы попробовать использовать последнюю стабильную версию для Casbah 2.1.5-1 –

+0

Чтобы убедиться, что вы перезагрузили и обновили после изменения файла сборки? –