Hola chicos. Estoy trabajando en un programa en Java diseñado para ser utilizado en un entorno Linux que crea un nuevo proceso Java que ejecuta otra clase Java, pero estoy teniendo problemas con él. Finalmente arreglé todos mis problemas hasta esto. InvocandoJava Runtime.exec problemas en Linux
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })
en mi programa Java vuelve
/bin/bash: /usr/lib/jvm/java-6-openjdk/jre/bin/java -classpath /home/kevin/workspace/Misc/bin HelloWorld: No such file or directory
, ya sea en stdout/stderr. Si intento
Runtime.getRuntime().exec(new String[] { "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })
recibo una excepción de Java
Cannot run program "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'": java.io.IOException: error=2, No such file or directory
...
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
Y, por último, el uso de un simple
Runtime.getRuntime().exec("/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'")
me da un
-classpath: -c: line 0: unexpected EOF while looking for matching `''
-classpath: -c: line 1: syntax error: unexpected end of file
de stdout/stderr.
Mientras tanto, la creación de una nueva línea de .sh un archivo (y asignar permisos adecuados) con sólo esto (sin #!/Bin/bash en la parte superior del archivo)
/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'
da el resultado correcto con sin errores.
Entiendo que el uso de Runtime.exec es bastante complicado de perfeccionar, y ya resolví algunos problemas importantes que tuve antes, pero este problema simplemente me desconcierta (como el uso de Runtime.exec de StringTokenizer atornillando cualquier comandos que tienen espacios en ellos, por lo que invoqué la sobrecarga que acepta matrices de cadenas). Sin embargo, sigo teniendo problemas y no entiendo por qué.
Señor, usted es el mejor. ¡No puedo creer que la respuesta sea así de simple! Muchas gracias, nunca hubiera pensado hacer algo así. –