java.lang.securityException:无法使Java.lang.reflect.Method构造函数可



我正在使用GSON版本2.8.2

我使用了以下代码

public void saveObject(View view){
        SharedPreferences prefs = this.getSharedPreferences(
                "com.example.app", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        Gson gson = new Gson();
        String str = gson.toJson(view, View.class);
        editor.putString("text", str);
        editor.commit();
}

但是我遇到了以下的错误

Process: com.example.amitsiddhpura.paperview, PID: 17252
                                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.amitsiddhpura.paperview/com.example.amitsiddhpura.paperview.MainActivity}: **java.lang.SecurityException: Can not make a java.lang.reflect.Method constructor accessible**
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                                                                                         at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                         at android.os.Looper.loop(Looper.java:164)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:6494)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                                         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                                                                                      Caused by: java.lang.SecurityException: Can not make a java.lang.reflect.Method constructor accessible
                                                                                         at java.lang.reflect.AccessibleObject.setAccessible0(AccessibleObject.java:131)
                                                                                         at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:115)
                                                                                         at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:101)
                                                                                         at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:83)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:99)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.internal.bind.ArrayTypeAdapter$1.create(ArrayTypeAdapter.java:48)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:164)
                                                                                         at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
                                                                                         at com.google.gson.Gson.getAdapter(Gson.java:423)
                                                                                         at com.google.gson.Gson.toJson(Gson.java:661)
                                                                                         at com.google.gson.Gson.toJson(Gson.java:648)
                                                                                         at com.google.gson.Gson.toJson(Gson.java:603)
                                                                                         at com.example.amitsiddhpura.paperview.MainActivity.saveObject(MainActivity.java:34)
                                                                                         at com.example.amitsiddhpura.paperview.MainActivity.onCreate(MainActivity.java:23)
                                                                                         at android.app.Activity.performCreate(Activity.java:6999)
                                                                                         at android.app.Activity.performCreate(Activity.java:6990)
                                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
                                                                                         at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                         at android.os.Looper.loop(Looper.java:164) 
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:6494) 
                                                                                         at java.lang.reflect.Method.invoke(Native Method) 
                                                                                         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

您正在尝试保存包含无法序列化的上下文的视图类。阅读此处。

您的第一个参数视图在tojson方法中是错误的。通过合适的参数,它将起作用

tojson(jsonelement jsonelement(

将jsonements树转换为等效的json 表示。

void tojson(jsonelement jsonelement,附加作家(

写下了jsonelements树的等效json。

void tojson(jsonelement jsonelement,jsonwriter Writer(

将JSON的json写给作家。

字符串tojson(Object SRC(

此方法将指定的对象序列序列 表示。

void tojson(object src,附加作者(

此方法将指定的对象序列序列 表示。

字符串tojson(object src,type typeofsrc(

此方法序列化指定的对象,包括 通用类型,成为其等效的JSON表示。

void tojson(object src,type typeofsrc,appendable Writer(

此方法序列化指定的对象,包括 通用类型,成为其等效的JSON表示。

void tojson(object src,type typeofsrc,jsonwriter Writer(

将类型类型的SRC的JSON表示写给作者。

您可以创建该类的同伴对象并使用

相关内容

最新更新