java - Gson 安全异常 : Can not make Class Constructor accessible

标签 java reflection gson securityexception

我正在使用 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,同时试图反射(reflect)内部类。有没有人遇到过这种情况?

感谢任何帮助。

最佳答案

看来您是在启用了 SecurityManager 的 JVM 上运行 Gson。您需要禁用安全管理器才能使用 Gson。

关于java - Gson 安全异常 : Can not make Class Constructor accessible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267258/

相关文章:

java - XxX 未被识别为有效类型

c# - 抛出 AmbiguousMatchException

带有 GSON 的 Java 堆空间

java - 我的 Java Web 服务返回一个包裹在 html 中的 JSON 字符串,我如何删除 HTML

java - Java ME 中的是/否对话框

java - Android ListView Adapter 错误调用notifyDataSetChanged,Android bug?

java - Eclipse 安装程序 "Java for Windows Missing"

c# - 使用 Linq 表达式设置一个 readoly/InitOnly 成员字段

.net - 反射,从好友类获取DataAnnotation属性

Android Gson - 反序列化空值与缺失值