2017-03-14 16 views
0

シリアライズする必要があるオブジェクトがあります。 ATM、私はそれがSerializableを実装してみましょうが、実行時に、私はシリアライゼーション:シリアル化されたオブジェクトのシリアル化可能でないコンポーネントが見つかりません

Failed to marshal object with optimized marhshaller:{ $heresAhugeString$ } 
Failed to serialize object: { $alsoHugeString$ } 
java.io.IOException: Externalizable class doesn't have default constructor: interface java.io.Externalizable 
Externalizable class doesn't have default constructor: interface java.io.Externalizable 
java.io.Externalizable.<init>() 

最後の例外を取得し、私は非直列化可能フィールドを見つけることを試みるが、私は唯一見ることができます (java.io.Externalizableは。()無限回が来ます) ConcurrentHashMapを直列化する際に例外がスローされることを示します。私はこれが多くの情報ではないことを知っているが、完全なスタックトレースはかなり大きい。 マップ内のどのフィールドが非シリアル化の原因であるかを調べる方法を教えてください。または、どの情報を追加する必要がありますか? よろしく

+0

を使用している場合は、あなたのアールはあなたがJPAを使用している場合は、Javaのシリアライズ、または@Transientを使用し、あるいは@JsonIgnoreProperties場合

transient Javaキーワードを使用することができますこのヘルプべきではない - '外部化クラスは」doesnのデフォルトのコンストラクタがあります。 – Abubakkar

+0

しかし、どのクラスが意味するのか分かりません... –

+0

@Abubakkarは正しいです。シリアライズ時には、シリアライズされたクラスをインスタンス化するために、デフォルトコンストラクタが必要です。あなたはそれを持っていません。 – Dakoda

答えて

-1

私はどのタイプの逆シリアル化をしているのか分かりませんが、アンマーシャリング後にこのフィールドを使用する必要がない場合は、に設定する必要があります。あなたはジャクソン

関連する問題