Io ho effettuato questo test.
Il JAR da invocare (ClasseChiamata.jar) contiene solamente la seguente classe
codice:
package classechiamata;
import java.io.*;
public class ClasseChiamata {
public static void main(String[] args) {
FileWriter fw = null;
PrintWriter pw = null;
try {
fw = new FileWriter("pippo.log");
pw = new PrintWriter( fw );
for(String s : args) {
pw.println("Parametro: " + s);
}
pw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pw != null) {
try { pw.close(); } catch (Exception e) { }
} else {
if (fw != null) {
try { fw.close(); } catch (Exception e) { }
}
}
}
}
}
La classe che deve invocarlo, è così composta:
codice:
public class ClasseChiamante {
public static void main(String[] args) throws Exception {
Runtime.getRuntime().exec(
new String[] {"java",
"-jar",
"ClasseChiamata.jar",
"-pippo",
"-pluto",
"-debug",
"-fd"}
);
}
}
Questo è il file generato dalla chiamata al programma "ClasseChiamante":
codice:
Parametro: -pippo
Parametro: -pluto
Parametro: -debug
Parametro: -fd
Quindi, il lavoro viene svolto correttamente e i parametri vengono passati tutti, in modo corretto e nell'ordine esatto in cui sono elencati.
Come già detto... prendi il Process generato dalla chiamata a exec(), ottieni l'InputStream e verifica cosa accade... può essere che venga sollevata un'eccezione, ma non la potrai mai vedere altrimenti.
Ciao.