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 ne se charge pas !


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 64
    Par défaut Applet ne se charge pas !
    Boujours tout le monde!!

    En réalité mon probleme est un peu étonant!!! je vais essayer de le résumer.
    J'ai écris une applet "interfa.java" qui fait appel a une autre applet "welcom.java". l'applet "interfa.java" contient deux champ (User et mot de passe) et elle consulte la base de donnée pour une identification et charge l'interface de "welcom.java". mais le probleme est que quant je lance l'applet "welcom.java" avec un navigateur elle ne s'affiche pas et lance l'exception suivante :
    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
     
    java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
    	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.checkPackageAccess(Unknown Source)
    	at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
    	at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at CMA.enligne(CMA.java:102)
    	at welcom.init(welcom.java:63)
    	at sun.applet.AppletPanel.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Exception in thread "thread applet-welcom.class" java.lang.NullPointerException
    	at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    	at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    	at sun.applet.AppletPanel.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    le probleme qui me fait sauter la tête est que quant je lance l'applet "welcom.java" avec appletviewer elle se lance le plus normalement des choses, mais quant je la lance avec un navigateur (Internet explorer ou firefox) elle ne se charge pas et elle lance l'exception ci-dessus.

    Voici le code d'une classe interne de la classe welcom.java qui fait la consultation de la base de données :
    ( est pour JTable.)

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    class trmrec extends AbstractTableModel
         {
              ResultSet rs;
                    String url = "jdbc:odbc:om";
    		Connection con;
    		Statement stmt;
     
            public trmrec()
             {
              System.out.println("Avant getparameter");        
     
              try { 
                       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
     
                    System.out.println("serveur connecté");
     
    		} catch(java.lang.ClassNotFoundException e) {
    			System.err.print("ClassNotFoundException: ");
    			System.err.println(e.getMessage());
     
    		}
     
              try {
                            con = DriverManager.getConnection(url, "om", "om");
     
    			stmt = con.createStatement();
     
     
     
    		} catch(SQLException ex) {
    			System.err.println("SQLException: " + ex.getMessage());
    		}
              boite_reception();
     
           }
     
            public int getColumnCount() {
                return nomcolrec.size();
            }
            public int getRowCount() {
                return donneerec.size();
            }
            public String getColumnName(int col) {
     
                return nomcolrec.get(col).toString();
            }
            public Object getValueAt(int row, int col) {
                ArrayList ret;
                ret=(ArrayList)donneerec.get(row);
                return ret.get(col);
            }
            public Class getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
     
    public void boite_reception()
    {
                    String query = "select * from om.message where rec='MADIHA3'";
                    System.out.println("Debut de la fonction ajout ligne");
                    donneerec=new ArrayList();
     
                    nomcolrec.add("Expéditeur");
                    nomcolrec.add("Objet");
                    nomcolrec.add("Date d'envoi");
     
    		try {
     
                            int j=0;
     
    		        rs = stmt.executeQuery(query);
     
     
                           while (rs.next()) {
     
                              ArrayList elem=new ArrayList();
     
                              elem.add(rs.getString(2));//rs.getInt(1);
                              elem.add(rs.getString(4));
                              elem.add(rs.getString(6));
     
                              System.out.println("les message ! "+elem.get(1));
                              fireTableRowsInserted(getRowCount(),getRowCount() );
                              donneerec.add(elem);
                              j++;
                           }
     
               	stmt.close();
                    con.close();
     
    		} catch(SQLException ex) {
    			System.err.println("SQLException: " + ex.getMessage());
    		}
    	}
     
     public boolean isCellEditable(int row, int col) {
                if (col < 2) {
                    return false;
                } else {
                    return true;
                }
            }
     
     }
    Voici le code d'une classe interne dans l'applet "interfa.java" :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
      class identifier extends Thread
        {private Socket socket;
         private BufferedReader in;
         private PrintWriter out;
         private String user,psw;
     
        public identifier(InetAddress addr, String user1, String psw1)
        {
         user=user1;
         psw=psw1;
         try {
              socket =new Socket(addr, ecouteur.PORT);
             }
         catch(IOException e) {
         System.err.println("Socket failed");
         }
         try {
             in =new BufferedReader(new InputStreamReader(socket.getInputStream()));
             out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
             start();
             } catch(IOException e) {
             try {
                  socket.close();
                 }
             catch(IOException e2) {
                 System.err.println("Socket not closed");
                 }
            } 
     
       }
     
     
    public void run() {
    out.println(user);
     
    System.out.println(user);
            try {System.out.println("Essai de récupération des résultats");        
                 String retour=in.readLine();
                 URL welcom;
     
                 if(retour.equals("ok"))
                   {
                    System.out.println("C'est ok!!!");
                     attendre="ok";
     
                   }
                 else {System.out.println("C'est pas ok!!!");
                       //out.println("ko");
                     attendre="ko";
     
                      }
                }
            catch (IOException ex) {
                  ex.printStackTrace();
                }
            finally {try {
                       socket.close();
                      }
                     catch(IOException e2) {
                       System.err.println("Socket not closed");
                      }
                 }
    }
     }
    Merci de m'aider, car pour le moment je travail avec appletviewer mais apres je dois travailler avec des navigateur!!!!!

  2. #2
    Membre éclairé
    Profil pro
    Abcde
    Inscrit en
    Août 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Abcde
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2004
    Messages : 59
    Par défaut
    tu essaye d'acceder a une ressource (connection JDBC). Ton applet doit être signée !

    Les applets tournent dans une sandbox.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 64
    Par défaut plus d'explication
    est ce que vous pouvez me donner plus d'exlaircissement.
    sa veux dire koi "sandbox"???
    et vous m'avez pas donner de solution !!!.???

  4. #4
    Membre éclairé
    Profil pro
    Abcde
    Inscrit en
    Août 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Abcde
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2004
    Messages : 59
    Par défaut
    il faut lire un peu.

    http://java.sun.com/j2se/1.5.0/docs/

    et la partie de l'architecture sécurité de la plateforme JAVA :

    http://java.sun.com/j2se/1.5.0/docs/...pecTOC.fm.html

    une recherche sur google ou sur ces forums te donneront plein de réponses sur pourquoi et comment signer une applet.

    par exemple :
    http://fr.wikipedia.org/wiki/Applet

  5. #5
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut Précisions
    Pour des raisons de sécurité évidente, une applet est par définition contrainte de s'exécuter dans un environnement restreint. D'où l'expression SandBox (traduit littéralement = bac à sable). En clair, tant qu'une applet se contente de manipuler la page qui la contient, et qu'elle ne sollicite en rien le système d'exploitation locale, cette dernière peut être utilisée directement. Par contre, dés que la portée de l'applet touche l'accès au système de fichiers, au réseau ou à la mémoire de l'ordinateur hôte, cela signifie qu'elle tente d'accéder à un domaine en dehors de ses limites. Pour ces raisons, l'applet pour pouvoir s'exécuter nécéssite l'accord de l'utilisateur. C'est pourquoi il est alors impératif de signer l'applet, après l'avoir intégrée dans une archive JAR, afin de présenter un certificat à l'utilisateur qui lui signalera que pour pouvoir être exécutée sur sa machine, l'applet concernée doit avoir son consentement. Ce certificat permet par la même occasion à l'utilisateur d'identifier l'auteur du code et de prendre sa décision en accordant sa confiance ou pas, temporairement ou définitivement. Je préciserai, mais cela reste à vérifier, que si l'URL d'accès vers l'applet n'est du type HTTP mais File, vers un fichier local, il n'y a alors aucuns besoin de signer cette dernière. Mais elle doit alors être présente sur le PC de l'utilisateur qui cherchera à l'exploiter.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  6. #6
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 64
    Par défaut
    Si j'ai bien compris, si j'utilise mon applet dans la machine locale je peux acceder a une basse de données locale sans signer l'applet ?!!!!!!
    Car moi je n'utilise pas Internet, j'ai une base de données qui existe dans mon PC et je veux y acceder avec une applet!!!!!
    Tout ce passes localement, je vois pas pourquoi la signature !!!!!!!
    Merci de m'aider car il y a plusieurs applet qui s'appelle entre elle et je dois présenter ce projet comme un projet de fin d'étude, dans je suis vraiment dans l'embara!!!!!

Discussions similaires

  1. Applet ne charge pas tout le temps..
    Par chatis dans le forum Applets
    Réponses: 1
    Dernier message: 15/06/2012, 10h50
  2. applet qui ne se charge pas
    Par ibilakely dans le forum Applets
    Réponses: 1
    Dernier message: 06/06/2010, 20h23
  3. Applet qui ne charge pas
    Par Ayana dans le forum Applets
    Réponses: 3
    Dernier message: 12/11/2007, 10h39
  4. [débutant] Applet qui ne se charge pas
    Par Death83 dans le forum Applets
    Réponses: 4
    Dernier message: 06/09/2006, 09h20
  5. Réponses: 2
    Dernier message: 21/04/2005, 17h09

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