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

Entrée/Sortie Java Discussion :

execution commande linux


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Points : 178
    Points
    178
    Par défaut execution commande linux
    Bonjour,

    Je souhaite appeler une commande linux(sous distri debian) à partir d'un code java pour cela j'utilise donc :la méthode exec de la classe RunTime cependant malgré qu'aucune erreur se produise ma commande sous linux n'est pas executé.

    Voici le code que j'utilise pour faire appel à une commande :
    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
     
    /** Appel de l'injecteur */
    try{
    	Runtime run=Runtime.getRuntime();       //initialisation du runtime
    	String commande="/usr/local/apache-ant-1.7.0/bin/ant -buildfile /users/injecteur/build.xml -Dficxml="+InterfaceEnvoi.fichierEnregistre+" -Dclef="+InterfaceEnvoi.clefCryptage+" -Durl="+InterfaceEnvoi.url+" -Dcode="+ficRep+" run-inj";
    	String[] argument = { "/bin/bash", "-c", commande };
    	Process process=run.exec(argument);     //execution du script lancant l injecteur
    	try{  //affichage du flux de sortie
    		BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    		String ligne = null;
    		try{
    			System.out.println(ligne);
    		}finally{reader.close();}
    	}catch(IOException ioe){ }
    	 process.waitFor(); 
    }catch(Exception e){
    	System.exit(2);
    }
    Je pense être sur la bonne direction mais il doit y avoir quelque chose qui m'échappe alors voila je vous demande de l'aide

  2. #2
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Contrairement à ce qui est indiqué dans les commentaires de ton code, tu ne lis pas le flux de sortie standard de ton process.

    De plus tu n'utilises pas le flux d'entrée (et il est préférable de le fermer dans ce cas) ni le flux de sortie d'erreur (comment savoir si un problème survient dans ce cas ).


    Bref un peu de lecture s'impose :


    a++

  4. #4
    Membre habitué
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Points : 178
    Points
    178
    Par défaut
    J'ai récupérer le flux d'erreur et j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /usr/local/apache-ant-1.7.0/bin/ant: line 84: uname: command not found
    /usr/local/apache-ant-1.7.0/bin/ant: line 96: basename: command not found
    /usr/local/apache-ant-1.7.0/bin/ant: line 109: dirname: command not found
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher
    Les erreurs qui me sont donner me semble pas être dû au code java. Cependant ce qui me semble bizarre est que la commande est "not found" alors que si je la met en directe dans le shell il n'y a aucun problème.

  5. #5
    Membre habitué
    Homme Profil pro
    Developpeur web/Java
    Inscrit en
    Février 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur web/Java
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2008
    Messages : 98
    Points : 178
    Points
    178
    Par défaut
    J'ai résolu le problème essentiellement grâce à avoir pu voir les erreurs comme tu me l'avais recommandé !

    Le problème était lié à la configuration de ant et des variables d'environnements.
    J'ai donc indiqué le chemin de umount, basedir et dirname dans le script de ant.
    Cette méthode n'est pas très propre mais elle a le mérite de fonctionner.

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

Discussions similaires

  1. Execute command linux
    Par BATiViR dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 05/03/2008, 13h50
  2. [Système] executer une commande linux
    Par kirbs dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2005, 09h40
  3. Réponses: 6
    Dernier message: 23/11/2005, 14h24
  4. Executer une commande linux distante
    Par g-rom3 dans le forum Linux
    Réponses: 11
    Dernier message: 06/11/2005, 19h33

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