我正在努力让工作成为Salat的一个非常简单的例子。
build.sbt:
libraryDependencies += "com.novus" %% "salat" % "1.9.9"
在 sbt控制台:
import com.novus.salat._
import com.novus.salat.global._
import com.mongodb.casbah.Imports._
case class Alpha(x: String)
val a = Alpha(x = "Hello world")
val dbo = grater[Alpha].asDBObject(a) // not working
最后一行抛出异常:
GRATER GLITCH - unable to find or instantiate a grater using supplied path name
REASON: Very strange! Path='Alpha' from pickled ScalaSig causes ClassNotFoundException
Context: 'global'
Path from pickled Scala sig: 'Alpha'
我无法弄清楚出了什么问题,在互联网上看了两个小时的例子之后,我找不到一个我能做的工作。在我的例子中,它们是否已经过时或者我错了?
答案 0 :(得分:1)
SBT以某种方式干扰萨拉特加载课程的方式,并且无法使用默认的类加载器找到你的课程。不在sbt控制台中测试代码,而是创建一个简单的项目并运行它。
更新:正如Thomas指出Salat需要编译案例类并且在类路径上才能加载它。
build.sbt:
libraryDependencies += "com.novus" %% "salat" % "1.9.9"
HelloWorld.scala:
import com.novus.salat._
import com.novus.salat.global._
case class Alpha(x: String)
object HelloWorld {
def main(args: Array[String]): Unit = {
val a = Alpha(x = "Hello world")
val dbo = grater[Alpha].asDBObject(a)
println(dbo.toString)
}
}