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 :

probleme communication Java_Javascript


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Par défaut probleme communication Java_Javascript
    Bonjour,
    J'ai developpé une applet qui peut avoir acces au disque dur de l'utilisateur, et ensuite envoyer les fichiers par ftp. Jusque la tout marche pour le mieux, apres avoir quand meme bloquer un peu sur la signature ?

    Maintenant, je souhaite pouvoir creer un interfacage entre l'applet java et le javascript afin de pouvoir commander l'applet.
    Tous fonctionne correctement sauf dans les cas ou la fonction appelé par javascript gere le JFileChooser, ce qui leve une exception. Tandis que cele fonctionne correctement via un appel par 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
        public void acces_js() {//fonction appele par javascript
     
     
           JFileChooser chooser = new JFileChooser();//création dun nouveau filechosser
            chooser.setApproveButtonText("OK"); //intitulé du bouton
     
     
           if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                String nom = chooser.getSelectedFile().getAbsolutePath();
                JSObject win = JSObject.getWindow(this);
                 String tet ="document.getElementById('texttest'  ).innerHTML =" + nom+";" ;
              //  String  tet = "alert('coucoul');";
                win.eval(tet);
            }
            this.repaint();
     
        }
     
    //gestion evenement java
        public void actionPerformed(ActionEvent evt) {
     
                   JFileChooser chooser = new JFileChooser();//création dun nouveau filechosser
            chooser.setApproveButtonText("OKi"); //intitulé du bouton
     
     
           if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                String nom = chooser.getSelectedFile().getAbsolutePath();
                JSObject win = JSObject.getWindow(this);
     
               String tet ="document.getElementById('texttest'  ).innerHTML ='" + nom+"';" ;
                texte.setText(nom);
     
                win.eval(tet);
            }
            this.repaint();
     
        }
    Voici l'exception qui est geré:
    java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:141)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin.liveconnect.SecureInvocation.CallMethod(SecureInvocation.java:122)
    at sun.plugin.navig.motif.AThread.handleRequest(Native Method)
    at sun.plugin.navig.motif.AThread.JNIHandleLoop(AThread.java:40)
    at sun.plugin.navig.motif.AThread.run(AThread.java:32)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.plugin.javascript.JSInvoke.invoke(JSInvoke.java:19)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at sun.plugin.javascript.JSClassLoader.invoke(JSClassLoader.java:70)
    at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:566)
    ... 7 more
    Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
    at java.lang.System.getProperty(System.java:652)
    at javax.swing.filechooser.FileSystemView.getHomeDirectory(FileSystemView.java:380)
    at javax.swing.plaf.metal.MetalFileChooserUI.installComponents(MetalFileChooserUI.java:247)
    at javax.swing.plaf.basic.BasicFileChooserUI.installUI(BasicFileChooserUI.java:136)
    at javax.swing.plaf.metal.MetalFileChooserUI.installUI(MetalFileChooserUI.java:124)
    at javax.swing.JComponent.setUI(JComponent.java:673)
    at javax.swing.JFileChooser.updateUI(JFileChooser.java:1762)
    at javax.swing.JFileChooser.setup(JFileChooser.java:360)
    at javax.swing.JFileChooser.<init>(JFileChooser.java:333)
    at javax.swing.JFileChooser.<init>(JFileChooser.java:286)
    at test.comjavascript.acces_js(comjavascript.java:58)
    ... 17 more


    Je me demande donc si il est possible que je puisse effectuer cette action par un appel de javascript , ou si elle est bloquée pour des raisons de securité ou autres?

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 31
    Par défaut
    Bonjour,

    Je peux me tromper, mais dans ton cas j'essairais deux choses :

    1) Remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chooser.showOpenDialog(null)
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chooser.showOpenDialog(this)
    Ca peux paraitre idiot, mais ton problème ressemble à un problème de contexte dans lequel le JFileChooser est appeler. Alors je me dis en le liant directement à l'Appplet ça pourrait marcher

    2) Appeler le code dans un Thread. Je veux dire quelque chose qui ressemble à ceci :
    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
    public void acces_js() {//fonction appele par javascript
    Thread thread = new Thread()
    {
          public void run()
          {
             runAcessJS();
          }
    };
     
     }
    public void runAcessJS()
    {
     
           JFileChooser chooser = new JFileChooser();//création dun nouveau filechosser
            chooser.setApproveButtonText("OK"); //intitulé du bouton
     
     
           if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
                String nom = chooser.getSelectedFile().getAbsolutePath();
                JSObject win = JSObject.getWindow(this);
                 String tet ="document.getElementById('texttest'  ).innerHTML =" + nom+";" ;
              //  String  tet = "alert('coucoul');";
                win.eval(tet);
            }
            this.repaint();
     
        }
    Pourquoi dans un Thread tout simplement pour pas bloquer l'excution du Javascript, afin que coté navigateur l'appel de la méthode dure le moins de temps possible (Ca évite de figer, et ça permet aussi d'éviter certains blocage)

    -----

    Voila ce que j'essairais,
    En espérant que cela t'aidera,

    JackHack

Discussions similaires

  1. Jxta probleme communication noeuds
    Par snight dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 24/11/2008, 10h19
  2. [MPI] probleme communication
    Par Jeane dans le forum C++
    Réponses: 0
    Dernier message: 01/08/2007, 16h30
  3. Réponses: 5
    Dernier message: 23/06/2007, 10h45
  4. Réponses: 4
    Dernier message: 19/03/2007, 09h56
  5. [VB6] Probleme communication Port série
    Par Renard-fou dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 15/05/2006, 00h01

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