String commandLine = "";
for (int i = 0; i < arrayMitJavaPlusKlassennamePlusParameter.length; i++)
commandLine+=arrayMitJavaPlusKlassennamePlusParameter[i];
Runtime.getRuntime().exec(commandLine);
ja nach der api usw müsste eigentlihc eine fehlermeldung kommen, aber sie kommt nicht.. ich öffne ein programm welches argemunte benötigt, gib ihr aber keine. wie kann das?
Wo soll der Fehler den ausgegeben werden?
Der Process schreibt in seinen Standard output und den bekommt dein Programm.
Wenn doch beides Java Programme sind, warum überhaupt der Umweg über die Runtime?
irgendwo muss ja ein fehler auftauchen in programm B, weil das argument fehlt. wird das nicht in A hochgegen oder wenigstens in der konsole ausgegeben? sind beides konsolenanwendungen
class A{
public static void main(String[] args){
Runtime.getRuntime().exec("java B");
}
}
import javax.swing.JFrame;
public class B{
public static void main(String[] args){
JFrame frame = new JFrame("MyFrame");
frame.setSize(200,200);
frame.setVisible(true);
}
}
irgendwo muss ja ein fehler auftauchen in programm B, weil das argument fehlt. wird das nicht in A hochgegen oder wenigstens in der konsole ausgegeben? sind beides konsolenanwendungen
Nein, nicht in der Konsole. Welche Konsole denn? Das Process Objekt hat einen Input, einen Output und einen Errorstream.
Wenn du die nicht liest bist du selbst schuld, dann blubbern Fehlermeldungen eben ins Nirvana.
das komische ist, wenn ich bei zB "java NAME arg1 arg2..." das java weglasse kommt eine IOException sobald da aber java steht, geht das immer, ob nur "java" oder "java adffsdf" spielt keine rolle, sobald das erste wort java ist, klappt das
kannst du mir vielleicht bitte nochmal mit diesem errorstream helfen? ich komme da irgendwie voll nicht weiter. ich muss ja irgendwie über diesen errorstream die fehler holen können und auf der konsole von jbuilder unten ausgeben können, nur irgendwie weiß ich nicht, wie ich die streams verketten kann.
kannst du mir das vielleicht einemal vormachen bitte?
wenn ihr mir noch eine letzte frage beantworte könnt, dann stehe ich ewig in eurer schuld +g+
wofür ist genau die umgebungsvariabel in der methode exec() von getRuntime??
kann man da irgendwie das verzeichnis mit angeben, indem mer das programm starten soll, das über exec übergeben wird oder was hat das ding für eine genaue aufgabe?
Die main-Methode bekommt immer ein default-Argument: ein leeres String Array.
Je nachdem, wie sie darauf reagiert, kann es sein, daß sie tatsächlich nichts macht.
Wenn du das mit Runtime nur zu Übungszwecken machst, dann ist es OK.
Ansonsten ist es ein unnötiger Umweg, wie Wildcard schon sagte.
Seit Java 5 wird vorzugsweise mit ProcessBuilder statt Runtime gearbeitet.
Mit ProcessBuilder#directory kann man die working directory setzen.
In der ProcessBuilder-API ist auch ein Beispiel für die "environment" Variablen. http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html