反序列化期间的ClassNotFound

时间:2012-10-17 19:18:54

标签: grails

我正在尝试使用jason-io来序列化/反序列化MyClass实例。 jason-io库有两个类,JsonWriter和JsonReader,分别执行序列化和反序列化。这两个操作都是从Grails控制器调用的。

在序列化期间,会创建一个JSON对象,其中包含类名等。反序列化在Class.forName(“... MyClass”)中失败。班级名称是正确的。

我已经跟踪了问题并发现MyClass的类加载器是(java.net)URLClassLoader,但JsonReader类加载器是(org.codehaus.groovy.grails.cli.support)GrailsRootLoader。不过,我不知道如何解决这个问题。

由于

1 个答案:

答案 0 :(得分:1)

这可能与a known issue in groovy相关联。该错误报告中的解决方案是指定类加载器:

def file = new File('thingy.txt')
file.withObjectInputStream(getClass().classLoader){ ois ->
    def yourObject = ois.readObject ( )
} 

withObjectInputStream 方法也可以在其他类的groovy中使用,例如我成功使用了 GZIPInputStream 的实例。