3 Stimmen

Probleme mit der Reflection Permission bei der Verwendung der GSON-Bibliothek in einem Applet

Ich schreibe ein Applet, das einige JSON-RPC-Aufrufe macht. Ich verwende die Google JSON-Bibliothek (GSON), um die Antwort JSON in eine Klasse zu werfen. Thsi scheint gut zu funktionieren, wie es ist, aber wenn ich diesen Code in meinem Applet verwenden, ich bin mit einem Hit java.lang.reflect.reflectpermission . Nach dem, was ich im Internet gelesen habe dieses Thema auf SO scheint es, dass ich, da GSON Reflection verwendet, es nicht in Applets verwenden kann, es sei denn, ich ändere die Sicherheitsrichtlinie ausdrücklich. Wie kann ich das umgehen? Ich habe eine Reihe von Klassen in meiner Anwendung erstellt und benutze die Gson.fromJson Methode, um sie in die Klasse zu übertragen. Gibt es eine Möglichkeit, die gleiche Funktionalität zu erreichen, ohne die Hälfte meines Codes neu schreiben zu müssen?

(Die Komplexität des Umgangs mit JSON in Java scheint eine Liga für sich zu sein!)

Vielen Dank im Voraus, Leute.

0voto

BalusC Punkte 1034465

Abgesehen von Unterzeichnung das Applet, könnten Sie versuchen, es in AccessController#doPrivileged() :

public void init() {
    AccessController.doPrivileged(new PrivilegedAction<Object> {
        @Override public Object run() {
            // Put your original init() here.
            return null;
        }
    });
}

0voto

Esko Punkte 28242

Einige JSON-Bibliotheken für Java sind in der Tat umwerfend komplex, vor allem wenn man die Einfachheit von JSON selbst bedenkt. Meiner Meinung nach http://www.json.org/java/index.html ist die beste Bibliothek und macht keine ausgefallenen Tricks, sondern parst das JSON einfach in seine eigene spezielle Struktur und das war's. Das bedeutet natürlich, dass Sie speziellen Code erstellen müssen, um die JSON-Objekthierarchie in etwas zu verwandeln, das Sie verwenden, aber das sollte nicht so schwer sein.

Bei GSON geht es eher um JSON-basierte Persistenz im Sinne von XStream (die auch JSON verarbeiten kann) und klingt ein bisschen zu schwerfällig für ein Applet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X