2011-09-02 4 views
1

J'utilise une bibliothèque 3ème partie (pot) dans mon applet java et je reçois cette erreur:applet java AccessControlException dans la bibliothèque 3ème partie

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "*" "read,write") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPropertiesAccess(Unknown Source) 
    at java.lang.System.getProperties(Unknown Source) 
    at sfs2x.client.core.sockets.TCPSocketLayer.initNetty(TCPSocketLayer.java:63) 
    at sfs2x.client.core.sockets.TCPSocketLayer.<init>(TCPSocketLayer.java:59) 
    at sfs2x.client.bitswarm.BitSwarmClient.init(BitSwarmClient.java:90) 
    at sfs2x.client.SmartFox.initialize(SmartFox.java:148) 
    at sfs2x.client.SmartFox.<init>(SmartFox.java:127) 
    at bfwd.RedemptionOnline.Client.RedemptionOnlineApplet.init(RedemptionOnlineApplet.java:29) 
    at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Je teste sur mon serveur de développement et essayer de se connecter à localhost. Pourquoi aurais-je cette erreur maintenant, et comment l'empêcherais-je à l'avenir?

Ok, j'ai même auto-signé mon pot, mais il arrive toujours avec cette erreur.

Répondre

0
at sfs2x.client.core.sockets.TCPSocketLayer.initNetty(TCPSocketLayer.java:63) 

SFS2X semble être un serveur de jeux. Netty est un serveur TCP/IP. Pourquoi essayez-vous d'exécuter un serveur de jeu sur le côté client? Je ne suis pas sûr si les visiteurs de votre page Web vont être heureux avec cela. Quelle est l'exigence fonctionnelle après tout? Avez-vous envisagé de laisser votre serveur web faire le travail?

Peu importe, vous avez besoin de sign l'applet afin de le faire fonctionner. Les applets non signées ont des règles de sécurité très restrictives (sinon, il serait très facile de détruire l'intégralité de "Mes documents" et de l'envoyer au serveur, par exemple). Fondamentalement, vous devez envoyer votre code à une société de signature RSA et lui demander d'examiner le code et d'obtenir un certificat RSA que vous fournissez le long de votre applet afin que les clients sachent que c'est un logiciel de confiance.

Vous pouvez également signer votre applet avec un certificat maison qui est valide pour seulement 6 mois. Mais l'utilisateur final recevra toujours un avertissement de sécurité quand votre applet doit être chargée; l'utilisateur final est invité à confirmer s'il s'agit réellement d'un logiciel de confiance et qu'il peut être exécuté. Vous devez cependant toujours envelopper l'applet principal init() à l'intérieur d'un AccessController#doPrivileged().

public void init() { 
    AccessController.doPrivileged(new PrivilegedAction<Void>() { 
     @Override public Void run() { 
      // Put your original init() here. 
     } 
    }); 
} 
+0

J'utilise un serveur web. C'est l'API client, qui utilise des sockets pour s'y connecter. J'essaye de créer un "traducteur" si vous voulez entre javascript <-> java <-> smartfoxserver. Je veux utiliser mes compétences HTML5, CSS3 et javascript pour concevoir une bonne interface utilisateur. l'applet Java gère la connexion au serveur de jeu et fournit à l'interface utilisateur des données à afficher. Je vais essayer la cause doPriviliged je ne peux pas se permettre de payer une entreprise pour le faire signer. d'autant plus que je suis en train d'essayer de développer la chose d'abord – LordZardeck

+0

ok, cela ne fonctionne pas car il ne me laissera pas référencer mes variables dans ma classe d'origine. – LordZardeck

+0

Pourquoi pas? Construisez simplement votre classe principale d'interface utilisateur et exécutez-la. Par exemple. 'new UI(). run()' ou quelque chose. Les variables devraient évidemment être dans cette classe «UI». – BalusC

Questions connexes