• Viernes 8 de Noviembre de 2024, 17:08

Autor Tema:  problema con runtime()  (Leído 1547 veces)

lair

  • Miembro MUY activo
  • ***
  • Mensajes: 213
  • Nacionalidad: mx
    • Ver Perfil
problema con runtime()
« en: Lunes 3 de Agosto de 2009, 22:30 »
0
Hola a todos.

en esta ocacion tengon un par de problemas con el siguiente codigo, espero me puedan apoyar, este el codigo:

Código: Java
  1. Thread instalar=new Thread(new Runnable() {
  2.             public void run() {
  3.                 String pkg="";
  4.                 String sh="";
  5.                 int pos=1;
  6.                 try{
  7.                     while ((pkg = lineas.readLine().toString()) != null) {
  8.                         jProgressBar1.setValue(pos);
  9.                         pos++;
  10.                         try{
  11.                             sh="su -c 'rpm -Uhv "+ruta+"/Packages/"+pkg+"'";
  12.                             String[] command = {"sh","-c","rpm -Uhv "+ruta+"/"+pkg};
  13.                             System.out.println("rpm -Uhv "+ruta+"/Packages/"+pkg);
  14. /* El primer problema se encuentra en esta linea "Process process=Runtime.getRuntime().exec(command);"
  15. el problema es que cuando se ejecuta (eso creo yo) no lo hace, por lo que me retorna un null
  16. */
  17.                             Process process=Runtime.getRuntime().exec(command);
  18.                             InputStream is = process.getInputStream();
  19.                             BufferedReader br = new BufferedReader (new InputStreamReader (is));
  20.                             String aux = br.readLine();
  21. /* con esta linea ve la slida que me manda despues de "Ejecutar" el comando
  22. */
  23.                             System.out.println("Input "+aux+"n");
  24.                         }catch(Exception ex){
  25.                             jTextArea1.append(pkg);
  26.                             JOptionPane.showMessageDialog(null, "Error:n"+ex);
  27.                         }
  28.                     }
  29.                     try {
  30. /* y el otro error no se exactamente donde esta pero ya no ejecuta esta linea "Proceso terminado"
  31. */
  32.                         JOptionPane.showMessageDialog(null, "Proceso terminado");
  33.                         try {
  34.                             this.finalize();
  35.                         } catch (Throwable ex) {
  36.                             Logger.getLogger(install.class.getName()).log(Level.SEVERE, null, ex);
  37.                         }
  38.                     } catch (Exception ex) {
  39.                         JOptionPane.showMessageDialog(null, "Error:n"+ex);
  40.                     }
  41.                 } catch (Exception ex) {
  42.                     JOptionPane.showMessageDialog(null, "Error:n"+ex);
  43.                 }
  44.             }
  45.         });
  46.         instalar.start();
  47.  

en el segundo error me manda una excepcion:

Exception in thread "Thread-1" java.lang.NullPointerException
        at installer.install$3.run(install.java:154)
        at java.lang.Thread.run(Thread.java:636)
esto cuando deberia de detener el thread

de antemano gracias por su tiempo y ayuda

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: problema con runtime()
« Respuesta #1 en: Lunes 10 de Agosto de 2009, 12:31 »
0
Hola.

Si el process es null, el siguiente error lo tienes en process.getInputStream, que te hará saltar un NullPointerException.

He estado probando un poco el código en windows, ejecutando un comando ipconfig y algunos otros y no he tenido problema (No tengo linux en el trabajo).
La variable sh no la estás usando para nada, por lo que no ejecutas nunca el su -c y eso me despista un poco. Comprueba que el comando es realmente el que quieres ejecutar.

Para comprobar que todo debería ir bien, te aconsejaría meter la ejecución que quieres en un proceso por lotes y realizar la llamada a éste. Luego, trata de pasarle de parámetro al .sh sólo la ruta y luego la ruta y el pkg, a ver si tira. Todo indica que Java no te está cogiendo los parámetros de command de la forma en la que tú crees.


Espero que te sirva.

Un saludo.

lair

  • Miembro MUY activo
  • ***
  • Mensajes: 213
  • Nacionalidad: mx
    • Ver Perfil
Re: problema con runtime()
« Respuesta #2 en: Lunes 10 de Agosto de 2009, 17:01 »
0
gracias por la respuesta voy a probar y cualquier cosa te aviso, gracias