1

jason-io を使用して MyClass インスタンスをシリアライズ/デシリアライズしようとしています。jason-io ライブラリには、それぞれシリアル化と逆シリアル化を実行する JsonWriter と JsonReader の 2 つのクラスがあります。どちらの操作も Grails コントローラーから呼び出されます。

シリアル化中に、特にクラス名を含む JSON オブジェクトが作成されます。Class.forName("...MyClass") でデシリアライズに失敗します。クラス名は正しいです。

問題を追跡したところ、MyClass のクラス ローダーは (java.net) URLClassLoader ですが、JsonReader クラス ローダーは (org.codehaus.groovy.grails.cli.support) GrailsRootLoader であることがわかりました。ただし、これを修正する方法がわかりません。

ありがとう

4

1 に答える 1

1

これはgroovy の既知の問題に関連している可能性があります。そのバグ レポートの解決策は、クラス ローダーを指定することです。

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

withObjectInputStreamメソッドは、他のクラスでも groovy で使用できます。たとえば、GZIPInputStream のインスタンスでこれをうまく使用しまし

于 2013-01-29T15:54:35.587 に答える