2016-01-13 40 views
2

我試圖讓工作成爲薩拉特的一個非常簡單的例子。salat:GRATER GLITCH - ClassNotFoundException

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' 

我想不出什麼是錯誤的,2小時後看在互聯網上的例子我找不到一個,我可以工作。在我的例子中,它們全都過時了還是我錯了?

回答

1

SBT以某種方式干擾Salat加載類的方式,並且無法使用其默認類加載器找到您的類。在sbt控制檯中測試代碼,但創建一個簡單的項目並運行它。

更新:正如Thomas指出的那樣,Salat需要編譯案例類並將其加載到classpath中才能加載它。

build.sbt:

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

HelloWorld.scala:

+0

不,這是行不通的。我也沒有看到你的觀點。 –

+0

我使用了salat和Play,並使它適用於我,我不得不使用Play的類加載器來替換默認的類加載器salat。我現在更新答案。 –

+0

我不是在討論如何使用Play進行工作。我只是想讓它在獨立工作。 –