• Jueves 30 de Mayo de 2024, 02:56

Autor Tema:  Interpretar Comandos Linux A Traves De Java  (Leído 2668 veces)

Tisus

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Interpretar Comandos Linux A Traves De Java
« en: Jueves 23 de Septiembre de 2004, 22:48 »
0
Quisiera saber si puedo hacer el llamado de comados linux a traves de Java, y si hubiera como por favor decirmelo; y los lugares donde pueda haber ejemplos.
Gracias:

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Interpretar Comandos Linux A Traves De Java
« Respuesta #1 en: Viernes 24 de Septiembre de 2004, 02:16 »
0
Hola!!!!!!!!

Si vos lo q queres hacer es ejecutar comandos desde tu aplicacion, usa la clase Runtime y ejecuta el comando. Pensa q eso solo funcionara bajo GNU/LINUX y no DOS ni otro sistema operativo porque los comandos son distintos salvo por execpciones. Por ejemplo: dir funciona tanto bajo LINUX como en DOS. Pero si hicieras un ls, en DOS no andaria.

Salu2!!!!!

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
Re: Interpretar Comandos Linux A Traves De Java
« Respuesta #2 en: Miércoles 29 de Septiembre de 2004, 09:02 »
0
Un detalle.

Por más que he probado, dir no funciona en dos, ni cls ni ningún comando "interno" (comandos que no tienen un .exe, sino que están dentro de command.com).

Runtime.getRuntime.exec("dir");  // da error

He hecho pruebas estilo "start cls", "cmd cls", etc y no he conseguido nada, ya que se me abren nuevas ventanas o sesiones nuevas, que se cierran inmediatamente y no se ven los resultados.

¿Hay alguna forma de hacerlo?

Sed buenos.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Interpretar Comandos Linux A Traves De Java
« Respuesta #3 en: Miércoles 29 de Septiembre de 2004, 12:48 »
0
Hola!!!!!!!!!!!!!

Mando un ejemplo de como lanzar una aplicacion desde JAVA. Hay algo medio "anti" multiplataforma porque para saber en q sistema operativo corro tomo el file separator pero puede traer muchos problemas. Es igual no importa, lo q importa es el ejemplo en si.

Código: Text
  1.  
  2. private boolean reiniciarAplicacion()
  3. {
  4.   boolean resultado = true;
  5.     Runtime rt = Runtime.getRuntime();
  6.     try
  7.     {
  8.             String oFileSeparator = System.getProperty("file.separator");
  9.             String[] cmd = new String[3];
  10.  
  11.             if( oFileSeparator.equals( "\\" ) )
  12.             {
  13.                 cmd[0] = "cmd.exe"&#59;
  14.                 cmd[1] = "/C"&#59;
  15.                 cmd[2] = "C://ejecutable";
  16.             }
  17.  
  18.             if (oFileSeparator.equals( "/" ))
  19.             {
  20.                 cmd[0] = ".\\ejecutable";
  21.             }
  22.  
  23.             Process proc = rt.exec(cmd);
  24.       }
  25.       catch (Throwable exc4)
  26.       {
  27.         System.out.println("No se puede iniciar.\n");
  28.         exc4.printStackTrace();
  29.         return false;
  30.       }
  31.       return resultado;
  32. }
  33.  
  34.  

Espero q siva

Salu2!!!!

chuidiang

  • Miembro MUY activo
  • ***
  • Mensajes: 123
  • Nacionalidad: es
    • Ver Perfil
    • http://www.chuidiang.com
Re: Interpretar Comandos Linux A Traves De Java
« Respuesta #4 en: Lunes 4 de Octubre de 2004, 11:13 »
0
Hola de nuevo.

He probado esto

Código: Text
  1. class prueba
  2. {
  3.   public static void main (String[] args)
  4.   {
  5.     try {
  6.     Runtime.getRuntime().exec ("cmd /c cls");
  7.     } catch (Exception e)
  8.     {
  9.       e.printStackTrace();
  10.     }
  11.   }
  12. }
  13.  

y no funciona (no borra la pantalla), pero tampoco da ningún error.

Sin embargo, desde ventana de ms-dos

cmd /c cls

funciona correctamente.

En general, para arrancar ejecutables no hay problema. El problema es el comando concreto cls. Todavía no he conseguido borrar la pantalla desde java.

También he probado a coger el getInputStream del Process que devuelve exec() y redirigirlo a la pantalla, pero obtengo un caracter extraño (ascii = 12), pero no se borra la pantalla.

Se bueno.