IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

[Applet Signée]J'ai malgré tout une Exception avec un JFileChooser


Sujet :

Applets Java

  1. #1
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut [Applet Signée]J'ai malgré tout une Exception avec un JFileChooser
    Bonjour,
    Je fais une grosse applet qui doit notamment lire un fichier sur l'ordinateur de l'utilisateur.
    En local, évidemment tout marche nickel. J'ai signé par moi-même avec jarsigner l'applet, j'ai mis tout ca sur mon serveur. Mon browser me demande d'accepter d'executer l'applet :


    L'applet se lance donc, et je peux faire plusieurs actions.
    POurtant quand j'arrive au JPanel créant un JFileChooser(), tout part en:§!#@.
    La ligne comporte juste this.fileChooser=new JFileChooser();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError
        at sun.awt.shell.Win32ShellFolder2$ComTask.execute(Unknown Source)
        at sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Unknown Source)
    (...)
    at javax.swing.JComponent.setUI(Unknown Source)
        at javax.swing.JFileChooser.updateUI(Unknown Source)
        at javax.swing.JFileChooser.setup(Unknown Source)
        at javax.swing.JFileChooser.<init>(Unknown Source)
        at javax.swing.JFileChooser.<init>(Unknown Source)
        at eadmin.gui.etapes.EtapeEleve.<init>(EtapeEleve.java:49)
        at eadmin.gui.etapes.AccueilEtapes.boutonEtapeElevesActionPerformed(AccueilEtapes.java:478)
    (...)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission shutdownHooks)
        at java.security.AccessControlContext.checkPermission(Unknown Source)
        at java.security.AccessController.checkPermission(Unknown Source)
        at java.lang.SecurityManager.checkPermission(Unknown Source)
        at java.lang.Runtime.addShutdownHook(Unknown Source)
        at sun.awt.shell.Win32ShellFolder2$ComTaskExecutor.<init>(Unknown Source)
        at sun.awt.shell.Win32ShellFolder2$ComTaskExecutor.<clinit>(Unknown Source)
        ... 46 more
    J'ai bien vu ici et des raisons sur les policy files utilisable avec AppletViewer, mais je vois mal mes petits élèves et collègues prof créer leurs propres policy-files.

    Bref pourquoi mon applet signée n'a t-elle pas accès aux ressources locales ?

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    J'ai trouvé la réponse ici :
    http://forum.java.sun.com/thread.jsp...readID=5189640
    et là :
    http://forum.java.sun.com/thread.jsp...22942&tstart=0

    En résumé :
    • Une JApplet signé a accès aux ressources.
    • Les threads publics issus de l'Applet NE L'ONT PAS
    Pour ma part, je résoud le problème ainsi :

    Pour l'Applet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class AppletEadmin extends javax.swing.JApplet
    {
     public void init() {
      super.init();
      try{
      System.setSecurityManager(null);
      }
      catch (Exception e){e.printStackTrace();}
      }
      EadminSeed seed= new EadminSeed(this);
      this.getContentPane().add(seed);
    }
    Pour ma petite graine EadminSeed (qui regroupe les Objets récurents dans l'appli)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class EadminSeed extends robusta.swing.Seed
    {
    JFileChooser fileChooser;
     public EadminSeed(JApplet applet) {
            super(applet);
            this.fileChooser=new JFileChooser();        
        }
    public JFileChooser getFileChooser(){
            return this.fileChooser;
        }
    }
    Et quand je veux mon JFileChooser, je fait appel au Seed qui est un objet issu du thread de l'Applet.

    Avec les threads, on s'y perd vite, et je ne suis pas encore sûr que ca marche à 100%. Il est de toute facon possible de mettre le JFileChooser directement dans l'applet.
    Je ne suis pas non plus sûr que System.setSecurityManager(null); ait le moindre intérêt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Logger toutes les exceptions avec Log4Net
    Par galich dans le forum C#
    Réponses: 1
    Dernier message: 14/01/2014, 17h06
  2. Réponses: 2
    Dernier message: 19/10/2012, 21h45
  3. Utiliser une applet signée pour acceder au disque avec javascipt
    Par foued_scorpion dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/11/2006, 09h56
  4. Réponses: 2
    Dernier message: 08/08/2005, 21h30
  5. Réponses: 2
    Dernier message: 14/02/2005, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo