Probleme applet lancant un .bat

Phisso
Probleme applet lancant un .bat

Bonjour,

Je débute en Java et j’aurais voulu créer un applet appelant un fichier batch. Manque de chance cela ne marche pas du tout et j’ai beau chercher, je ne vois pas du tout d’où ce problème peut venir.

Code de l’applet (signé je tiens à préciser) :

import java.applet.* ;
import java.awt.* ;
import java.io.*;

public class Webcam extends Applet 
{
  public void init ()
  {
    String[] cmd = new String[3];
	cmd[0] = "cmd.exe" ;
	cmd[1] = "/C" ;
	cmd[2] = "C:\\Webcam.bat"; 
        
    try
    {
	Runtime rt = Runtime.getRuntime();
	Process proc = rt.exec(cmd);     
    }
    catch(Exception e)
    {
      System.out.println("erreur d'execution " + cmd + e.toString());
    }
   }
}

et le code du .bat, qui fonctionne très bien quand je double clique dessus :

java SwingCapture

Merci beaucoup.

jrebillat

Il y a des systèmes de protection mis en place pour interdire aux applets d'accéder au disque dur ainsi qu'au réseau.
Plutôt que tout t'expliquer, je te renvoie là : http://www.commentcamarche.net/faq/sujet-3841-java-creer-une-applet-qui-accede-au-disque-dur

Phisso

Bonjour,

Merci de ta réponse mais je ne pense pas que le problème vient de la vu que mon applet est déjà signée ! De plus sous Internet Explorer, la fenêtre pour exécuter ou annuler l'applet apparait et quand je clique sur exécuter rien ne se passe.

fredericmazue

Lancer un processus avec la classe Runtime est un art.
Art qui est décrit dans un article de Programmez! 82 si tu peux t'y reporter, ou sinon recherche sur ce forum, le sujet a été traité moult fois.

En général quand quelqu'un veut utiliser la classe Runtime, il lit la Javadoc et, immanquablement, va faire toutes les erreurs qu'il y a à faire. L'une après l'autre. Ca ne rate jamais. :lol:

Commençons donc par le première qui est là comme il se doit: Ce n'est pas le tout de lancer un processus, il faut aussi attendre à la fin de son exécution sinon la JVM peut s'arrêter avant lui et le tuer pour l'occasion, puisque le processus est un fils. Donc:

Process proc = rt.exec(cmd);
proc.waitFor();

Pour les erreurs qui ne manqueront pas de suivre ;) essaie d'abord de te reporter à Programmez! 82 ou à ce forum.

Et je pense aussi que jrebillat n'a pas eu tort de te faire un rappel à propos de la sécurité des applets.