Java - Problemas con Runtime.getRuntime.exec()

 
Vista:

Problemas con Runtime.getRuntime.exec()

Publicado por iGNASI85 (23 intervenciones) el 26/09/2006 03:11:17
Tengo una aplicación JAVA (GUI), que entre otras cosas, necesito que cuando presiono un JButton, este "llame" a un script. No hay problema salvo que dicho script, tiene que estar obligatoriamente en la ruta "." (línea de código 1), el mismo directorio de donde lanzo el GUI primitivo, ya que si intento ejecutar directamente de la carpeta natura del script, éste, no se ejecuta(línea de código 2).

He probado cambiar el current work dictory al de la carpeta contenedora del script, usando la línea de código 3 y 4(incluso con la línea 5 de código), pero tampoco funciona.

LÍNEA 1 --> Process p = Runtime.getRuntime().exec("./runap.sh out");

LÍNEA 2 --> Process p = Runtime.getRuntime().exec("./fibonacci/runap.sh out");

LÍNEA 3 --> System.setProperty("user.dir", "/home/ignasi/tfc/compp2p/fibonacci");
LÍNEA 4 --> Process p = Runtime.getRuntime().exec("./runap.sh out");
LÍNEA 5 --> Process p = Runtime.getRuntime().exec("/home/ignasi/tfc/compp2p/runap.sh out");

Muchas gracias, este tema me tiene loco !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con Runtime.getRuntime.exec()

Publicado por Tom (1831 intervenciones) el 26/09/2006 10:39:49
Tu línea 5 debería funcionar correctamente, siempre y cuando:

- Tu programa esté corriendo en Unix/Linux ;-)
- El path del script lo hayas escrito correctamente.
- El script tenga permisos de ejecución, y tenga una primera línea parecida a "#! /bin/sh"

De cualquier manera, prueba también esto:

Runtime.getRuntime().exec("sh '/home/ignasi/tfc/compp2p/runap.sh out'");

Recuerda que Exec está pensado para lanzar "binarios".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Runtime.getRuntime.exec()

Publicado por iGNASI85 (23 intervenciones) el 26/09/2006 12:57:07
El Script contiene lo siguiente:

#!/bin/bash
java -classpath ../lib/parallel.jar:../lib/utils.jar:fibonacci.jar:. Aplicacio

Lo bueno del caso, es que si muevo el Script y los .jar, .class y .java al q hace referencia dicho script a la ruta "." (Trabajo con Linux), se lanza correctamente...

Muchas gracias, seguiré tu consejo y te informaré!

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Runtime.getRuntime.exec()

Publicado por iGNASI85 (23 intervenciones) el 26/09/2006 13:05:27
Bien... una vez dado los permisos al Script:

chmod +x runap.sh

he probado lo siguiente:

Process p = Runtime.getRuntime().exec("/home/ignasi/tfc/compp2p/fibonacci/runap.sh out");

y no ha funcionado. Después, he cambiado !/bin/bash por !/bin/sh y he ejecutado la línea que me has escrito:

Process p = Runtime.getRuntime().exec("sh '/home/ignasi/tfc/compp2p/fibonacci/runap.sh out'");

pero tampoco ha funcionado.

El path es correcto, ya que cuando me invento uno me muestra por pantalla una excepción... es muy raro, parece que Java bloquee la ejecución en un directorio distinto al actual de trabajo... seguiré indagando.

Gracias por la ayuda!!

PD: Se aceptan mas sugerencias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Runtime.getRuntime.exec()

Publicado por Tom (1831 intervenciones) el 26/09/2006 16:20:44
El problema está en tu script.

En el classpath de la llamada java, cambia los paths relativos ('../') por paths absolutos (como en la llamada a Exec().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Runtime.getRuntime.exec()

Publicado por iGNASI85 (23 intervenciones) el 26/09/2006 19:41:53
He modificado el script:

#!/bin/bash
java -classpath
/home/ignasi/tfc/compp2p/lib/parallel.jar:
/home/ignasi/tfc/compp2p/lib/utils.jar:
/home/ignasi/tfc/compp2p/fibonacci/fibonacci.jar:
/home/ignasi/tfc/compp2p/fibonacci/Aplicacio

Tb he provado el método #!/bin/sh... pero no ha dado resultado, he hecho combinaciones... pero no ha dado resultado...

El tema esta que des de la GUI no me ejecuta el script /home/ignasi/tfc/compp2p/fibonacci/runap.sh, pero si inicio el GUI ,me conecto (es un Sistema P2P) entonces si manualmente des de consola me situo en:

/home/ignasi/tfc/compp2p/fibonacci/

y ejecuto el script:

ignasi@thermaltake:~/tfc/compp2p/fibonacci$ ./runap.sh out

Éste se lanza sin problemas... me tiene intrigado el tema.

Muchas gracias por tu paciencia y ayuda.

PD: Si encuentro la solución la escribiré en el foro por si alguién pasa por lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Runtime.getRuntime.exec()

Publicado por Joan Mikel (3 intervenciones) el 18/10/2006 11:02:32
Ignasi, también he estado teniendo problemas de este tipo con el Runtime de Java... he probado de todo lo que ya habéis explicado pero misteriosamente seguía sin funcionar... traté de moverme entre directorios para ejecutar los scripts des de el mismo directorio pero nada de nada... misteriosamente hay scripts que se ejectuan bien con un simple

r.exec("/dir/script2") y hay otros que no... así que finalmente y harto de calentarme la cabeza lo único que he podido hacer para poderlo ejecutar sin problemas ha sido poner el script en /usr/bin y llamarlo cómodamente como r.exec("estadistiques.sh")... así que... esto es lo que hay.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar