salat:GRATER GLITCH - ClassNotFoundException

时间:2016-01-13 15:58:18

标签: scala casbah salat

我正在努力让工作成为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'

我无法弄清楚出了什么问题,在互联网上看了两个小时的例子之后,我找不到一个我能做的工作。在我的例子中,它们是否已经过时或者我错了?

1 个答案:

答案 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)
  }
}