Java アプレットで Google Gson を使用しようとしていますが、使用すると
スレッド「Thread-19」の例外 java.security.AccessControlException: java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) で java.security.AccessController.checkPermission(( AccessController.java:546) で java.lang.SecurityManager.checkPermission(SecurityManager.java:532) で 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.com.google.gson.JsonDeserializationVisitor.getTarget(JsonDeserializationVisitor.java:56) の constructTarget(JsonObjectDeserializationVisitor.java:40) com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:109) の com.google.gson.JsonDeserializationContextDefault .fromJsonObject(JsonDeserializationContextDefault.java:73) com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:51) com.google.gson.Gson.fromJson(Gson.java:495) com.google.gson. com.google.gson.Gson.fromJson(Gson.java:396) の Gson.fromJson(Gson.java:444) org.jblux.client の com.google.gson.Gson.fromJson(Gson.java:372) .network.GsonParser$1.run(GsonParser.java:32) at java.security.AccessController.doPrivileged(Native Method) at org.jblux.client.network.org.jblux.client.network.PlayerDataFactory.getDataFromBase64(PlayerDataFactory.java:36) の GsonParser.parseJson(GsonParser.java:36) org.jblux.client.states.MainMenuState.update(MainMenuState.java:155) の Java .util.Observable.notifyObservers(Observable.java:142) org.jblux.client.network.ResponseWaiter.responseReceived(ResponseWaiter.java:33) org.jblux.client.network.ServerListener.notify_observers(ServerCommunicator.java:236) ) org.jblux.client.network.ServerListener.doCommand(ServerCommunicator.java:252) で org.jblux.client.network.ServerListener.run(ServerCommunicator.java:218) でorg.jblux.client.network.ResponseWaiter.responseReceived(ResponseWaiter.java:33) の util.Observable.notifyObservers(Observable.java:142) org.jblux.client.network.ServerListener.notify_observers(ServerCommunicator.java:236) のorg.jblux.client.network.ServerListener.doCommand(ServerCommunicator.java:252) で org.jblux.client.network.ServerListener.run(ServerCommunicator.java:218) でorg.jblux.client.network.ResponseWaiter.responseReceived(ResponseWaiter.java:33) の util.Observable.notifyObservers(Observable.java:142) org.jblux.client.network.ServerListener.notify_observers(ServerCommunicator.java:236) のorg.jblux.client.network.ServerListener.doCommand(ServerCommunicator.java:252) で org.jblux.client.network.ServerListener.run(ServerCommunicator.java:218) で
ここで見つけた他の2つの関連する質問がありました。
アプレットで GSON ライブラリを使用すると、Google App Engine 上の GSON が Security Exception
Reflection Permission の問題をスローする
しかし、どちらも私には答えがありませんでした。Gsonを使用しないと言われました。
自分のアプレットに Reflection のアクセス許可を与える方法はありますか?
更新: アプレットを機能させる方法がわからなかったため、JNLP ファイルと Java Web Start を使用するようにアプリケーションを切り替えているところです。誰かがそれを理解する場合に備えて、この質問を開いたままにしますが、Gson をあきらめたくない場合は、JNLP を使用することが唯一の選択肢かもしれません。