![]() |
Ejecutar comando linux desde Java QUE TAL: NECESITO EJECUTAR EL SIGUIENTE COMANDO LINUX DESDE JAVA : bzip2 -dc *.tar.bz2 | tar -x ESE COMANDO SI LO EJECUTO DESDE LA LINEA DE COMANDOS DE LINUX ANDA BIEN. CUANDO LO METO EN JAVA NO CORRE. lo estoy poniendo de la siguiente forma : Runtime.getRuntime().exec ("bzip2 -dc *.tar.bz2 | tar -x") Meti todo el comando en un string y puse Runtime.getRuntime().exec (string ) y lo mismmo Lo mismo me pasa si quiero borrar por ejemplo todos los *.txt si pongo desde linea de comando rm *.txt borra todo pero si pongo desde java no hace nada. Runtime runtime = Runtime.getRuntime(); Process proceso = runtime.exec( "rm *.txt"); Como se resuelve esto ? Lo puedo resolver con un bash, pero quiero que java ejecute todo. Gracias |
Re: Ejecutar comando linux desde Java Este comando puedes programarlo tu mismo, de hecho te recomiendo que lo hagas vos y no que le digas a bash que lo haga (sobre todo si lo que pretendes con java es lograr independencia de la plataforma). Puedes usar una biblioteca que maneje archivos comprimidos y luego con la misma biblioteca comprimir el archivo. El manejo de archivos/directorios también te permite eliminar archivos sin tener que recurrir a la linea de comandos. En todo caso, podrías probar hacer directamente esto: Runtime.exec("comando"); No estoy seguro que funcione pero me parece más directo que el Runtime.getRuntime().exec("comando"); |
Re: Ejecutar comando linux desde Java Lo resolvi de la siguiente forma viendo un programa de otro foro: Si bien no entiendo todo lo que hace despues, pongo por un lado como anda y por otro todo el resto de los comandos que ejecuta ese programita para ver que hace. CON ESTO ANDA IMPECABLE !! EN LUGAR DE PONER bash -c HAY QUE PONER SOLO SH !! String[] command = {"sh","-c","rm *.txt"}; final Process process = Runtime.getRuntime().exec(command); DE ACA FUE DONDE SAQUE SOLO ESE CODIGO, PERO NO ENTIENDO BIEN QUE HACE. import java.io.*; public class carota { public static void main(String[] args) { try { String[] command = {"sh","-c","bzip2 -dc *.tar.bz2 | tar -x"}; final Process process = Runtime.getRuntime().exec(command); new Thread() { public void run() { try{ InputStream is = process.getInputStream(); byte[] buffer = new byte[1024]; for(int count = 0; (count = is.read(buffer)) >= 0;) { System.out.write(buffer, 0, count); } } catch(Exception e) { e.printStackTrace(); } } }.start(); new Thread() { public void run() { try{ InputStream is = process.getErrorStream(); byte[] buffer = new byte[1024]; for(int count = 0; (count = is.read(buffer)) >= 0;) { System.err.write(buffer, 0, count); } } catch(Exception e) { e.printStackTrace(); } } }.start(); int returnCode = process.waitFor(); System.out.println("Return code = " + returnCode); } catch (Exception e) { e.printStackTrace(); } } } |
Re: Ejecutar comando linux desde Java Cita:
Hola, Lo que hace ese comando es en lugar de utilizar la shell bash del sistema operativo, emplea la shell sh, son shells diferentes y puede que por algún motivo te resulte más utili emplear una u otra shell, hay más de ellas y cada una tiene sus utilidades. No obstante si me gustaría comentar que sería mas conveniente utilizar las funciones y librerias propias de java para tratamiento de ficheros ya que es mucho mas eficaz y rapido por un lado y desligas el software que estas desarrollando de la plataforma en la que lo corras. Un saludo. |
Respuesta: Ejecutar comando linux desde Java bno en efecto el codigo anterior sirve para ejecutar comandos de linux desde java... la salida de esto se alamacena en un arreglo de bytes... Cita:
gracias |
Respuesta: Ejecutar comando linux desde Java Buenas. Aquí hay un ejemplito, espero que te sirva: http://felinfo.blogspot.com/2009/12/...dos-desde.html Saludos y felices fiestas! |
| La zona horaria es GMT -6. Ahora son las 16:00. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.