Bonjour,

J'ai un gros problème avec la fonction Runtime.getRuntime().exec().

J'ai un programme Java lancé depuis linux via un jar exécutable. Dans ce programme je dois appeler la commande suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
lp -c -onobanner /tmp/nomFichier
J'ai donc essayé la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
Runtime.getRuntime().exec("lp -c -onobanner /tmp/nomFichier");
Ainsi que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Runtime.getRuntime().exec(new String[]{
	        "lp",
	        "-c",
	        "-onobanner",
	        "/tmp/nomFichier"}
);
Ce qui me donne une jolie exception dans les deux cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
java.io.IOException: Cannot run program "lp": java.io.IOException:error=2, No such file or directory
... blabla
 
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
        at java.lang.ProcessImpl.start(ProcessImpl.java:65)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
        ... 31 more
Le fichier existe bel et bien, je vérifie son existence avant de lancer la 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
19
20
21
22
23
24
25
26
 
String pathTempFile = "/tmp/nomFichier";	
File file = new File(pathTempFile);	
 
try {
     FileWriter writer = new FileWriter(pathTempFile, false);
     try {
	   writer.write(txtArea.getText(),0,txtArea.getText().length());
 
	   if ( file.exists()){
//	       String cmd = "lp -c -onobanner " + pathTempFile;
//	       Runtime.getRuntime().exec(cmd);
	       Runtime.getRuntime().exec(new String[]{
	        	"lp","-c",
	        	"-onobanner",
	        	"/tmp/nomFichier"});
	   }	        	
     } finally {
	   writer.close();
	   if ( file.exists()){
	       file.delete();	
	  }
     }
} catch (IOException e) {
   e.printStackTrace();
}
Je ne comprends pas le problème... J'ai déjà utilisé cette fonction sur des commande type chmod (sur des fichiers dans le même répertoire). Et je n'ai jamais eut de soucis...

J'ai pensé que ça pouvait venir du writer qui n'était pas fermé avant. Mais même en le fermant avant. J'ai exactement la même exception.

Si quelqu'un peut m'aider, je le remercie d'avance.

Shaina