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