thomas legrand
thomas legrand

Reputation: 493

salat: GRATER GLITCH - ClassNotFoundException

I'm trying to make work a very simple example of Salat.

build.sbt:

libraryDependencies += "com.novus" %% "salat" % "1.9.9"

In sbt console:

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

The last line throws an exception:

 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'

I can't figure out what's wrong, after 2 hours of looking at examples on the internet I couldn't find one that I could make work. Are they all outdated or am I wrong somewhere in my example?

Upvotes: 2

Views: 230

Answers (1)

Yury Sukhoverkhov
Yury Sukhoverkhov

Reputation: 450

SBT interfere Salat's way of loading class somehow and it's unable to find your class with its default classloader. Test the code not in sbt console, but create a simple project and run it.

UPDATE: as Thomas pointed out Salat needs case class to be compiled and be on classpath to be able to load it.

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

Upvotes: 1

Related Questions