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 :

Des exceptions ,que des exceptions


Sujet :

Applets Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 76
    Points : 53
    Points
    53
    Par défaut Des exceptions ,que des exceptions
    bonjour tous le monde
    je tenter d'exécuter un programme qui affiche deux images comme ceci (dans les Fichiers attachés).avec comme architecture un fichier Test.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Test{
         	public static void main(String arg[])
           {
                new Fenetre();
           }
    }
    et un fichier Fenetre.java (qui est une classe qui hérite de JFrame),et un ImagePanel.java(qui est un classe qui hérite de JPanel).
    et lorsque je voulais que mon programme soit exécutable dans une page web (Applet),je changer juste le Test.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Test extends Applet{
     
    	public void init() {
    		super.init();
    		System.setSecurityManager(null);
    		add(new Fenetre());
    	}
    et ajouter un fichier Test.html qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <HTML>
    <BODY>
    <APPLET code="Test.class" width="580" height="290" align="left">
              Message s'affichant si l'applet n'est pas supportée par le navigateur
    </APPLET>
    </BODY>
    </HTML>
    le compilation sa passe sans erreur.mais lorsque je l'execute sous le navigateur Firefox 3.0.8 :il n'affiche rien ,il signale un erreur :
    Java Plug-in 1.6.0_13
    Utilisation de la version JRE 1.6.0_13 Java HotSpot(TM) Client VM

    java.security.AccessControlException: access denied (java.lang.RuntimePermission setSecurityManager)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.System.setSecurityManager0(Unknown Source)
    at java.lang.System.setSecurityManager(Unknown Source)
    at Test.init(Test.java:7)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Exception : java.security.AccessControlException: access denied (java.lang.RuntimePermission setSecurityManager)
    .
    j'ai cherché dans le net ,je crois que ces des exception de droit d'accées aux fichiers j'ai ajouté 3 ligne de permission dans java.policy qui est dans :
    C:\Program Files\Java\jre6\lib\security
    .mais il a rien changer.si quelqu'un a une idée merci d'avance.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Une applet java n'a pas le droit de modifier le security manager, puisque c'est lui qui s'assure que l'applet n'outrepasse pas ses droits. Retire cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		System.setSecurityManager(null);

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    bonjour
    merci de me repondre,j'ai enlever c'ette ligne ,mais pas de changemant,
    j'ai oublier de mentionner que j'ai ajouter ces 3 ligne dans java.policy qui est dans :
    C:\Program Files\Java\jre6\lib\security
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    permission java.security.AllPermission;
    	permission java.io.FilePermission "<<ALL FILES>>", "read,write,execute,delete"; // Accès aux fichiers
    	permission java.util.PropertyPermission "*", "read,write"; //accès au property
    .

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    d'abord, on ne modifie pas le fichier java.policy, c'est la porte ouverte aux attaques par applet si tu fais ça de travers. Ensuite, si t'as supprimé cette ligne et que tu as toujours une erreur, poste la nouvelle erreur.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    bonjour
    c'est normale, car avec ces 3 ligne que j'ai ajouté dans "java.policy" ils donnent la permission a tous.je les supprimer ,et recompiler mon programme, il me donne cette exception,cette fois çi ne pas autoriser la lecture d'une image.
    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
    Java Plug-in 1.6.0_13
    Utilisation de la version JRE 1.6.0_13 Java HotSpot(TM) Client VM
    ----------------------------------------------------
     
     
    java.security.AccessControlException: access denied (java.io.FilePermission Image\grapes2.jpg read)
    	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.checkRead(Unknown Source)
    	at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
    	at sun.awt.SunToolkit.getImage(Unknown Source)
    	at javax.swing.ImageIcon.<init>(Unknown Source)
    	at javax.swing.ImageIcon.<init>(Unknown Source)
    	at Test.init(Test.java:9)
    	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Exception : java.security.AccessControlException: access denied (java.io.FilePermission Image\grapes2.jpg read)
    sachant que mon programme si l'exécute comme application desktop ça marche bien.
    et merci d'avance

  6. #6
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 126
    Points : 91
    Points
    91
    Par défaut
    il faut que ton applet soit signé pour pouvoir s'executer !!
    tu peux soit créer ta propre clé et signer ton applet avec le java toolkit, il y a tous ce qu'il te faut dedans(keytool et jarsigner), soit utilisé un certificat mais la c'est plus compliqué.
    Ensuite la ligne setSecurityManager(null) elle sert à permettre à tes Threads issues de ton applet de pouvoir eux aussi écrire et lire sur le disque dur, en gros ça étend les droits que tu as donné à tes applets à leurs threads.
    Si tu n'as pas de thread ça ne sert à rien

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    il vaux mieux avoir un securitymanager et une applet signée qui utilise normalement le système que de faire un setSecurityManager null. Sur certaines plateformes, tu va avoir les étapes suivantes

    1) l'applet démarre, la jvm vois qu'elle est signée et te demande si tu l'autorise à s'exécuter, en fonction des informations fournis dans le certificat
    2) l'applet tente une opération nécessitant des droits. Certaines plateformes utilisent le point 1 pour d'office donner les droits, d'autre disent, au cas par cas "l'applet demande à faire ....., l'autoriser?"

    Et je t'assure que moi "l'applet demande à supprimer le security manager", je lui répond non de suite, elle a pas à faire ça

Discussions similaires

  1. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  2. Réponses: 4
    Dernier message: 02/04/2008, 17h51
  3. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  4. Réponses: 3
    Dernier message: 26/02/2007, 14h43
  5. Réponses: 3
    Dernier message: 23/01/2007, 08h14

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