2

Gson を使用して、ネストされた静的クラスを含むクラスをシリアル化/逆シリアル化しています。クラスは以下のようになります。

public class ClassA {
private NestedClass nestedClass;

public NestedClass getNestedClass() {
return nestedClass;
}

public void setNestedClass(NestedClass nestedClass) {
this.nestedClass = nestedClass;
}

public static class NestedClass implements Serializable {

public NestedClass() {
}
}
}

シリアル化は正常に機能しますが、json 文字列を逆シリアル化してオブジェクトに戻そうとすると、次の SecurityException が発生します。

java.lang.SecurityException: Can not make a java.lang.Class constructor accessible
    at java.lang.reflect.AccessibleObject.setAccessible0(Unknown Source)
    at java.lang.reflect.AccessibleObject.setAccessible(Unknown Source)
    at com.google.gson.MappedObjectConstructor.getNoArgsConstructor(MappedObjectConstructor.java:86)
    at com.google.gson.MappedObjectConstructor.constructWithNoArgConstructor(MappedObjectConstructor.java:63)
    at com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor.java:54)
    at com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:42)
    at com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:55)

内部クラスを反映しようとしているときに、例外が Java から発生しているようです。誰かが以前にそのような状況にあったことがありますか?

どんな助けでも感謝します。

4

1 に答える 1

0

が有効になっている JVM で Gson を実行しているようですSecurityManager。Gson を使用するには、セキュリティ マネージャーを無効にする必要があります。

于 2012-11-08T07:31:36.320 に答える