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

Apple Discussion :

Execution ligne de commande. [Java]


Sujet :

Apple

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Execution ligne de commande.
    Bonjour,

    J'aimerais vous soumettre le problème que je rencontre depuis quelques semaines déjà. Je vous expose les faits.

    Je suis en train de programmer une application multi-plateforme (UNIX et Mac) utilisant un autre programme pour faire un diagramme dans un format image.
    Dans cette api, je voudrais juste passer une liste de commande au Shell car je suis sur que l'appel du programme marche, sur mon Ubuntu comme sur mon Mac snowleopard. J'utilise donc la classe Process à laquelle je passe une instance de la classe Runtime, comme le code suivant:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Runtime runtime = Runtime.getRuntime();
    Process process = null;
     
    String args[] = {"/bin/sh", "-c", "dot -Tpng -oMonFichierVoulu.png MonFichierSource.dot"};
     
    try{
    	process = runtime.exec(args);
    }catch...
    Cela fonctionne sur Ubuntu mais pas sur Mac, me rapportant une erreur: il ne connait pas le programme demandé (alors que la même ligne marche dans le terminal). J'ai essayé différente variante comme montré sur ce tutoriel (même l'api tiers shell présenté à la fin de celui-ci). Cela finit toujours avec le même résultat, la même erreur.
    Auriez-vous donc des pistes/idées que je pourrais explorer? Je commence vraiment à désespérer...

    Merci d'avoir pris le temps de lire ce message et j’espère que quelqu'un pourra m'aider.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Quant vous exécutez une ligne de commande dans un terminal, un ensemble de variables d'environnement - dont $PATH - ont été initialisées pour vous : ce n'est jamais le cas quand vous exécutez directement la commande via un "exec".
    Si cela fonctionne sur une machine et pas l'autre, c'est tout simplement parce que le programme "dot" est installé sur l'une dans un directory par défaut comme /bin, /usr/bin et que sur l'autre il est probablement dans /usr/local/bin, /opt/bin, /opt/local/bin, … qui ne sont pas parcourus par défaut.
    Remplacer "dot" par son chemin complet ou utiliser la variante "exec" qui permet de passer des variables d'environnement, quitte à ce que ce contexte d'utilisation soit lu d'un fichier de properties pour éviter de devoir recompiler pour chaque nouvel OS supporté.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup JeitEmgie pour ta réponse rapide et qui m'a bien aidé! J'ai changé le répertoire du programme (qui était bien /usr/local/bin/...) par /usr/bin/... et mon application marche très bien avec l'api Shell!

    Merci aussi a toopac pour l'ajout des balises code

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

Discussions similaires

  1. faire executer ligne de commande idtcpserver
    Par waste dans le forum Débuter
    Réponses: 0
    Dernier message: 16/06/2010, 11h17
  2. executer ligne de commande javah
    Par jocqfd dans le forum Général Java
    Réponses: 5
    Dernier message: 09/04/2009, 14h38
  3. [VBS] Execution ligne de commande
    Par parker13 dans le forum VBScript
    Réponses: 1
    Dernier message: 11/07/2006, 15h03
  4. [VB6] Execution ligne de commande : fonctionnement aleatoire
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/05/2006, 15h51
  5. Execution de ligne de commande DOS
    Par Chap$ dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2006, 12h12

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