La ejecución de una escritura del golpe de la JVM
-
20-09-2019 - |
Pregunta
Estoy teniendo problemas para ejecutar un script bash simple a partir de Java. Específicamente:
...
try{
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", command);
pb.directory(new File(dir));
Process shell = pb.start();
int exitVal = shell.waitFor();
... donde 'comando' la ruta absoluta a un script bash que es ejecutable por todos y 'directorio' es el directorio de trabajo.
Cuando ejecuto mi programa me sale un código de salida 127 ( "command not found"). He intentado usar la clase de ejecución de Java y el método process.exec pero tampoco he trabajado para mí. ¿Alguna sugerencia?
Solución
Si "comando" es una escritura del golpe, a continuación, en lugar de pasar "/ bin / bash" (y la errónea "c" que estás haciendo) a ProcessBuilder, sólo asegúrese de que comando es ejecutable (chmod + x comando), que la primera línea es #!/bin/bash
, y luego pasar la ruta completa en ProcessBuilder.
Otros consejos
No se -c. Eso significa que el guión es el argumento a -C. Usted está de paso es una ruta de acceso, y no utiliza -c para eso.