Guía práctica para trabajar de forma robusta con procesos externos en Java: cómo evitar bloqueos por flujos
stdout/
stderr no leídos, configurar correctamente las codificaciones de salida (por ejemplo,
UTF-8,
CP866), tener en cuenta las diferencias entre sistemas en los comandos (
ls vs
dir), manejar permisos y códigos de salida mediante
process.exitValue(), cerrar recursos sin fugas y evitar interbloqueos interactivos. Tratamos el uso correcto de
ProcessBuilder, la lectura paralela de flujos (hilos/
ExecutorService), la finalización correcta mediante
process.destroy(), así como rutas portables con
File.separator.