federaimondi ha scritto:
Probabilmente ho lasciato qualche System.out.println per controllare qualcosa, in quel caso potrebbe piantarsi il programma?
Per questioni di "buffering" tra Java e l'applicazione lanciata, se quest'ultima fa anche solo moderatamente dell'output su std-out/err, questo andrebbe letto, altrimenti l'applicazione lanciata può bloccarsi.
Quindi ci sono diverse alternative:
a) Dal exec() ottieni il Process, prendi il InputStream del std-out e fai un thread a parte che legge l'output del processo. Ciò che leggi lo puoi "buttare via" (non ne fai nulla) o puoi stamparlo da qualche parte. Questo richiede un po' di attenzione, non lo consiglio se non per motivi validi.
b) Cambi il comando (usando cose specifiche del SO) per avviare l'applicazione in modo che abbia una
sua propria console.
c) Usi ProcessBuilder invece che Runtime.exec usando anche una nuova feature introdotta in Java 7 che è il suo metodo inheritIO() che permette alla applicazione lanciata di "ereditare" gli stream del processo padre. Se la tua applicazione principale ha una sua console, sarà usata anche per il processo lanciato.