“de java.de sécurité.AccessControlException: accès refusé” l'exécution d'une Applet Java signée

J'ai un petit Applet Java et j'ai un problème ennuyeux. J'ai signé mon POT avec mon propre fichier de clés à l'aide de jarsigner outil (à la suite de ces instructions).

L'Applet Java de téléchargement d'un signé POT et essaie de le lancer avec une classe étendue de URLClassLoader. Ce POT essaie d'exécuter cette ligne de code:

ClassLoader.getSystemClassLoader().getResource("aResource");

Il échoue avec une grande trace de la pile fini par:

Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getClassLoader")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1476)
    at test.SecondJAR.main(SecondJAR.java:8)

(Ligne 8 de test.SecondJAR correspond à getResource(...) méthode

Lorsque l'Applet Java est lancé, l'utilisateur est invité à accepter le certificat, si il/elle fait confiance à l'éditeur:

“de java.de sécurité.AccessControlException: accès refusé” l'exécution d'une Applet Java signée

Même si je l'accepte, l'exception s'est produite. Même si j'ai installer le certificat, et le message est automatiquement acceptée, l'exception s'est produite.

J'ai essayé ceci:

AccessController.doPrivileged(new PrivilegedAction<Object>() {
    public Object run() {
        ClassLoader.getSystemClassLoader().getResource("aResource");
        return null;
    }
});

Et il ne fonctionne pas avec la même exception.

Toute aide serait appréciée!

Vous semblez dire que l'exception est à venir à partir de getSystemClassLoader ou getResource mais la trace de la pile, dit getContextClassLoader (l'utilisation de ce qui est rarement une bonne idée). Peut-être un peu plus de trace de pile serait utile.
Si l'exception est levée par le code téléchargé. Par défaut URLClassLoader sera autorisations d'utilisation (par ProtectionDomain) en fonction de l'endroit où le code a été téléchargé (Même Origine). Il est très difficile de faire ce genre de truc. Avez-vous vraiment besoin de faire cela? Apparemment une raison commune pour essayer ce genre de chose est d'éviter d'avoir à garder la signature de code. Mobile, le code doit être signé pour être digne de confiance pour une bonne raison!
J'ai un Downloader Applet qui obtient un JAR généré. ce POT est à chaque fois différent et différent pour chaque utilisateur. Je dois le télécharger à chaque fois et de l'exécuter. le second BOCAL est signé! il doit exister un moyen de le faire ;-(
J'ai édité la question. maintenant il y a la trace de la pile complète. l'exception est lancée par le second BOCAL dans le getResource(...) ligne.

OriginalL'auteur logoff | 2012-07-03