Programación General > Java

 problema con runtime()

(1/1)

lair:
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 ---Thread instalar=new Thread(new Runnable() {            public void run() {                String pkg="";                String sh="";                int pos=1;                try{                    while ((pkg = lineas.readLine().toString()) != null) {                        jProgressBar1.setValue(pos);                        pos++;                        try{                            sh="su -c 'rpm -Uhv "+ruta+"/Packages/"+pkg+"'";                            String[] command = {"sh","-c","rpm -Uhv "+ruta+"/"+pkg};                            System.out.println("rpm -Uhv "+ruta+"/Packages/"+pkg);/* El primer problema se encuentra en esta linea "Process process=Runtime.getRuntime().exec(command);"el problema es que cuando se ejecuta (eso creo yo) no lo hace, por lo que me retorna un null*/                            Process process=Runtime.getRuntime().exec(command);                            InputStream is = process.getInputStream();                            BufferedReader br = new BufferedReader (new InputStreamReader (is));                            String aux = br.readLine();/* con esta linea ve la slida que me manda despues de "Ejecutar" el comando*/                            System.out.println("Input "+aux+"n");                        }catch(Exception ex){                            jTextArea1.append(pkg);                            JOptionPane.showMessageDialog(null, "Error:n"+ex);                        }                    }                    try {/* y el otro error no se exactamente donde esta pero ya no ejecuta esta linea "Proceso terminado"*/                        JOptionPane.showMessageDialog(null, "Proceso terminado");                        try {                            this.finalize();                        } catch (Throwable ex) {                            Logger.getLogger(install.class.getName()).log(Level.SEVERE, null, ex);                        }                    } catch (Exception ex) {                        JOptionPane.showMessageDialog(null, "Error:n"+ex);                    }                } catch (Exception ex) {                    JOptionPane.showMessageDialog(null, "Error:n"+ex);                }            }        });        instalar.start(); 
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:
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:
gracias por la respuesta voy a probar y cualquier cosa te aviso, gracias

Navegación

[0] Índice de Mensajes

Ir a la versión completa