2010-07-05 5 views
0

Après des heures de travail (je ne suis pas un programmeur java), j'ai réussi à emballer et mettre à l'intérieur d'une applet qui effectue un téléchargement ftp sur un serveur distant. Le fichier principal est "prova.class" dans "invia.jar"; J'utilise une bibliothèque de troisième partie, placée dans "edtftpj.jar". Je l'ai signé à la fois fichier et les inclus dans la page avec le code suivant:Applet signé throw: java.security.AccessControlException. Comment puis-je le faire fonctionner?

Index.html

<applet width="300" height="300" classpath="./" code="prova.class" archive="invio.jar,edtftpj.jar"> </applet> 

maintenant, quand je signale le navigateur à ma page J'ai trouvé ce message sur le consolle:

Could not read property 'edtftp.log.level' due to security permissions 
Could not read property 'edtftp.log.log4j' due to security permissions 
Could not read property 'edtftp.log.log4j' due to security permissions 
java.security.AccessControlException: access denied (java.net.SocketPermission www.artkiller-web.com resolve) 
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.checkConnect(Unknown Source) 
at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source) 
at java.net.InetAddress.getAllByName0(Unknown Source) 
at java.net.InetAddress.getAllByName(Unknown Source) 
at java.net.InetAddress.getAllByName(Unknown Source) 
at java.net.InetAddress.getByName(Unknown Source) 
at com.enterprisedt.net.ftp.FTPClient.connect(FTPClient.java:966) 
at com.enterprisedt.net.ftp.FileTransferClient.connect(FileTransferClient.java:386) 
at prova.start(prova.java:44) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

Une idée de la façon de travailler - c'est tout?

thank u à l'avance

ArtoAle

Répondre

1

Vous avez besoin d'envelopper l'URL de connexion dans un bloc privilégié de code. Il semblerait également que vous ayez des problèmes de lecture dans le fichier de propriétés, le fichier de propriétés que vous pouvez empaqueter directement dans votre fichier, si vous essayez de lire le fichier de propriétés de l'ordinateur client, vous devrez envelopper ce code dans un fichier privilégié. bloc de code aussi bien.

Voici un bloc de code que j'ai utilisé dans une autre réponse pour obtenir une URL via le contrôleur d'accès.

try 
{ 
    final String imageURL = "http://www.google.com/intl/en_ALL/images/logo.gif"; 
    URL url = (URL) AccessController.doPrivileged(new PrivilegedAction() 
    { 

     public Object run() 
     { 
      try 
      { 
       return new URL(imageURL); 
      } 
      catch (MalformedURLException e) 
      { 
       e.printStackTrace(); 
       return null; 
      } 

     } 
     }); 

    if(url == null) 
    { 
     // Something is wrong notify the user 
    } 
    else 
    { 
     // We know the url is good so continue on 
     img = ImageIO.read(url); 
    } 

    } 
    catch (IOException e) 
    { 
    System.out.println(e); 
    }