Ver la versión completa : [Ayuda] Ejecutar comando UNIX desde aplicación Java
Hola a todos, necesito que mi aplicación ejecute una serie de programas a través de la línea de comandos pero no hay manera, si quiero hacer un "ls -l" por ejemplo lo ejecuta sin problemas pero si tengo que ejecutar un programa propio instalado en el sistema no hay manera.
He probado con el processBuilder y con el getRuntime().exec(comando) pero sin conseguir ningún resultado :(
Process p = Runtime.getRuntime().exec("/bin/sh /Users/Nakio/ejecutable.sh");
try {
p.waitFor();
System.out.println(p.exitValue());
} catch (InterruptedException e) {
e.printStackTrace();
}
El sh tiene permisos de ejecución y comando "/bin/sh /Users/Nakio/ejecutable.sh" funciona perfectamente desde el terminal
Ayuda famigos!
Saludos, Nakio.
http://static.pokato.net/2010-10-05-16-12-26415638425.jpg
Quiero decir, ¿qué error te da?
jduranmaster
21/03/2012, 18:53
Pues que raro, porque tengo por ahi una aplicación que hacia uso de:
java.lang.Process theProcess = java.lang.Runtime.getRuntime().exec("comando")
y si me funciona desde Debian y también en ubuntu. Seguro que la aplicación en java ve el path al ejecutable.sh??
http://static.pokato.net/2010-10-05-16-12-26415638425.jpg
Quiero decir, ¿qué error te da?
No se puede enseñar :D
Saludos, Nakio.
---------- Post añadido a las 18:59 ---------- Post anterior a las 18:58 ----------
Si que la ve porque cuando no tenía permisos el fichero me lo decía. Ahora con permisos y todo simplemente el programa hace como si la ejecución de ese mandato devolviese "nada"...
Saludos, Nakio.
jduranmaster
21/03/2012, 18:59
EDIT: comando "/bin/sh /Users/Nakio/ejecutable.sh" ¿no será un problema con los caracteres de escape "/" o algo asin verdad? porque de ser asi ya sabes por lo que tienes que sustituir el caracter "/" cuando lo metes entre comillas.
EDIT: comando "/bin/sh /Users/Nakio/ejecutable.sh" ¿no será un problema con los caracteres de escape "/" o algo asin verdad? porque de ser asi ya sabes por lo que tienes que sustituir el caracter "/" cuando lo metes entre comillas.
Pero ese problema sucede con "\" en lugar de con "/" no? no se, la historia es que si modifico por ejemplo el nombre del ejecutable por uno que no existe java me devuelve una excepción diciendo que el ejecutable no existe, si lo pongo correctamente simplemente no pasa nada...
Saludos, Nakio.
jduranmaster
21/03/2012, 19:03
pues ya no recuerdo si era con "\" o con "/" pero sin más datos sobre el error es lo que se me ocurre.
Lo he probado y nada, error de sintaxis no es porque si hago por ejemplo un "ls -l /User/Nakio/nakioStudio > /User/Nakio/muestraDir.txt" lo realiza perfectamente...
Saludos, Nakio.
jduranmaster
21/03/2012, 19:10
Prueba a añadir esto:
java.io.BufferedReader stdInput = new java.io.BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println("esta es la salida standard del comando:\n");
java.lang.String s = null;
while ((s = stdInput.readLine()) != null) {System.out.println(s);}
... y asi ves la salida que produce la ejecución de tu sh.
Ya lo probé y eso... la nada absoluta :(:
esta es la salida standard del comando:
Saludos, Nakio.
Ahora sí que me he perdido... ¿por qué no nos puedes poner qué error te da? ¿hay que adivinarlo?
la ejecución de ese mandato devolviese "nada"...
¿Nada de nada o cero? p.exitValue() devuelve un entero, así que no sé qué es "nada de nada"... ¿NaN?
¿Puede que te esté saltando IOException en el exec()?
Muy bien, cagada de mis partes, en el .sh tenía que poner el PATH de las aplicaciones que ejecuto...
Gracias!
Saludos, Nakio.
jduranmaster
21/03/2012, 19:39
jajaja, típico. Ya me extrañaba, porque el código java estaba bien.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.