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

Java Discussion :

Lancer Process Linux


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut Lancer Process Linux
    Bonjour,

    Je souhaite exécuter une commande bash en Java. (import d'un shapefile dans une base de données postgis).

    Pour cela je fais :
    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
    Process process = null;
    try {
    	String commande = "shp2pgsql -p /tmp/MYSHP myschema.mytable > /tmp/mytable.sql";
    	System.out.println("COMMANDE = "+commande);
    	process = Runtime.getRuntime().exec(commande);
    	followUp(process);
    } 
    catch (IOException e) {
    	System.out.println("PB creation");
    	if(process != null)
    		process.destroy();
    	throw e;
    }
     
    private void followUp(Process process) throws IOException {
    	InputStream inputstream = process.getInputStream();
    	InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
    	BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
    	System.out.println("bufferedreader : "+bufferedreader);
    	String line = bufferedreader.readLine();
    	System.out.println(line);
    	while (line != null) {
    		System.out.println(line);
    		line = bufferedreader.readLine();
    	}
    }
    Si je copie/colle la commande dans une console ça fontionne.
    J'ai essayé de mettre le chemin complet vers l'exécutable (/./usr/local/pgsql/data/bin/shp2pgsql) mais ça ne change rien.

    Le process n'est pas null et aucune erreur n'est remontée mais le bufferedreader.readLine() l'est.

    Merci de votre aide !
    WwAve

  2. #2
    Membre Expert
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Par défaut
    Et que donnes la commande "/bin/bash tonscript" (dans le java hein). Parce que ça m'étonnerais que java interprete les shebang

  3. #3
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Hello !

    Si ma commande est maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String commande = "/bin/bash shp2pgsql -p /tmp/MYSHP myschema.mytable > /tmp/mytable.sql";
    ça ne change rien...

  4. #4
    Membre Expert
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Par défaut
    Sinon il y a la classe ProcessBuilder (http://java.sun.com/j2se/1.5.0/docs/...ssBuilder.html) qui semble plus appropriée.

  5. #5
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Bon j'ai un peu tout essayé avec le ProcessBuilder :

    String commande = "shp2pgsql -p /tmp/MYSHP myschema.mytable > /tmp/mytable.sql";
    String commande = "/./usr/local/pgsql/bin/shp2pgsql -p /tmp/MYSHP myschema.mytable > /tmp/mytable.sql";
    String commande = "/bin/bash shp2pgsql -p /tmp/MYSHP myschema.mytable > /tmp/mytable.sql";

    Mais j'ai toujours la même erreur :
    java.io.IOException: java.io.IOException: /bin/bash shp2pgsql -p /tmp/AAA012 test_import.aaa012 | psql -d envol_db -U envol: not found
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
    at java.lang.ProcessImpl.start(ProcessImpl.java:65)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java :451)
    ...
    ... c'est bien compliqué mais au moins avec le ProcessBuilder ça a l'air de lancer quelque chose !...

  6. #6
    Membre Expert
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Par défaut
    Les pipes et les redirections, il ne les comprend pas Mais tu peux t'en sortir en consultant la manpage de bash.

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

Discussions similaires

  1. Arreter un process Linux
    Par marouene_ dans le forum Linux
    Réponses: 13
    Dernier message: 25/10/2011, 10h06
  2. difficultés avec "lancer process externe"
    Par homech dans le forum 4D
    Réponses: 1
    Dernier message: 22/07/2009, 14h50
  3. Réponses: 6
    Dernier message: 15/01/2008, 09h22
  4. Lancer process externe
    Par meischuh dans le forum 4D
    Réponses: 8
    Dernier message: 27/07/2007, 10h17
  5. thread java et process linux
    Par blured dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 27/06/2007, 14h58

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