gpt4 book ai didi

mongodb - Salat 无法在运行的 Play Framework 应用程序中序列化,但在控制台中运行良好

转载 作者:可可西里 更新时间:2023-11-01 10:05:08 26 4
gpt4 key购买 nike

我有一个 Play 2.1.0 (Scala) 框架应用程序,我正在尝试使用 Salat 将我的案例类对象转换为 MongoDBObjects。当我启动游戏控制台时,实例化我的案例类之一,导入 salat._ 和 salat.global._ 我能够从我的案例类转换为 MongoDBObject。

当我在游戏中处于“运行”模式时,我调用了一个调用 Actors 的页面,而 Actors 又执行相同的代码以从案例类转换为 MongoDBObject,我得到错误(data.Field 是我的全名案例类):

com.novus.salat.util.GraterGlitch:

  GRATER GLITCH - unable to find or instantiate a grater using supplied path

名字

  REASON: Very strange!  Path='data.Field' from pickled ScalaSig causes Clas

sNotFoundException

  Context: 'global'
Path from pickled Scala sig: 'data.Field'

为了回答这里的另一个问题,我将 scala-compiler 添加到我的项目的依赖项中,但这没有帮助。

令我感到困惑的是,这在手动实例化内容的控制台中工作正常,但在运行完整的 Play 应用程序时失败。

如有任何帮助,我们将不胜感激。

编辑:将 scala 编译器添加到依赖项并使用“Play 开始”工作正常。如果我使用“play run”,它会因上述错误而惨遭失败。任何关于原因的见解都会有所帮助。

最佳答案

根据 https://github.com/playframework/Play20/issues/822 ,这是由动态类加载器引起的。

就我而言,这段代码解决了问题。

implicit val ctx = new Context {
val name = "Custom_Classloader"
}
ctx.registerClassLoader(Play.classloader(Play.current))

另见 https://github.com/novus/salat/wiki/CustomContext

关于mongodb - Salat 无法在运行的 Play Framework 应用程序中序列化,但在控制台中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15930520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com