我嘗試使用谷歌GSON在我的Java小程序,但是當我做我得到線程Java的:在一個Applet使用GSON導致拋出:SecurityException
異常「主題-19」 java.security.AccessControlException :訪問被拒絕(java.lang.reflect.ReflectPermission suppressAccessChecks) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang .SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:74) 在com.google.gson.MappedObjectConstructor.getNoArgsConstructor(MappedObjectConstructor.java:85) 在com.google.gson.MappedObjectConstructor.constructWithNoArgConstructor(MappedObjectConstructor.java:62) 在com.google.gson.MappedObjectConstructor.construct(MappedObjectConstructor。的java:53) 在com.google.gson.JsonObjectDeserializationVisitor.constructTarget(JsonObjectDeserializationVisitor.java:40) 在com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:56) 在com.google.gson.ObjectNavigator。 accept(ObjectNavigator.java:109) at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:73) at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextD (com.google.gson.Gson.fromJson(Gson.java:495) com.google.gson.Gson.fromJson(Gson.java:444) com.google.gson)上的efault.java:51) 。 Gson.fromJson(Gson.java:396) at com.google.gson.Gson.fromJson(Gson.java:372) at org.jblux.client.network.GsonParser $ 1.run(GsonParser.java:32) (Native Method) at org.jblux.client.network.GsonParser.parseJson(GsonParser.java:36) at org.jblux.client.network.PlayerDataFactory.getDataFromBase64(PlayerDataFactory.java: 36) at org.jblux.client.states.MainMenuState.update(MainMenuState.java:155) at java.util.Observable.notifyObservers(Observable.java:142) at org.jb在org.jblux.client.network.ServerListener.notify_observers(ServerCommunicator.java:236) 處, ServerCommunicator.java:252) 在org.jblux.client.network.ServerListener.run(ServerCommunicator.java:218)
有,我發現這裏有兩個其他相關問題。
GSON on Google App Engine throws a Security Exception
Reflection Permission problems when using the GSON library in a applet
但他們都沒有回答我。有人說不使用Gson。
有什麼辦法可以給我的小程序授予反射許可?
更新:我正在切換我的應用程序以使用JNLP文件和Java Web Start,因爲我一直無法弄清楚如何使Applet工作。如果有人提出這個問題,我會留下這個問題,但如果你不想放棄Gson,使用JNLP可能是唯一的選擇。
第二個相關問題的答案之一建議簽署applet或執行'PrivilegedAction'。你嘗試了其他嗎? – BalusC 2010-10-03 17:50:31
是的,我的小程序一直在簽名,我嘗試了PrivelagedAction的事情,但沒有奏效。 PrivelagedAction甚至出現在我發佈的回溯中。 – jonescb 2010-10-03 18:29:29
在堆棧跟蹤的後面有一個對setAccessible的調用。你的無參數構造函數的可見性是什麼?如果還沒有,請嘗試將其設置爲公開,以查看是否讓你過去。如果已經公開,可能需要向GSON人士提交錯誤信息,以便在可見時不更改可訪問性。 – Carl 2010-10-03 20:25:51