Eclipse Java Programm aus anderem Java Programm starten

JanReyberg

Mitglied
Hallo allerseits,

ich versuche seit geraumer Zeit ein Java-Programm, das ich in Eclise geschrieen habe, aus einem anderen Programm in Eclipse zu starten.
Ich probiere mt sowas wie


Java:
"Runtime.getRuntime().exec("java C:/...Desktop/Paketname/scr/StartASM.java");"

und komme einfach nicht weiter. StartASM.java enthält die Main-Methode.

Kann mir jemand einen tipp geben, was ich falsch mache?

Vielen dank im Voraus

Jan
 
Wie würdest du denn das Programm in der Konsole starten? Doch bestimmt nicht mit
Code:
java ... .java
 
Was ist denn die Fehlermeldung/StackTrace?

[c]java C:/...Desktop/Paketname/scr/StartASM.java[/c] wird auf keinen Fall gehen, du musst erst kompilieren:

[c]javac C:/...Desktop/Paketname/scr/StartASM.java[/c]
und dann
[c]java C:/...Desktop/Paketname/scr/StartASM[/c]
 
Hallo,

Vielen Dank schonmal. Es muss tatsächlich noch compelliert werden.

Das merkwürdige ist, dass, wenn ich

Java:
 Runtime.getRuntime().exec("javac C:/Dokumente und Einstellungen/admin/Desktop/ASM_JN_14112010_Die_Synthese/src/StartASM.java");

schreibe die Console

Code:
java.io.IOException: Cannot run program "javac": CreateProcess error=2, Das System kann die angegebene Datei nicht finden

ausgibt, obwohl ich den Pfad sichr richtig habe...Verstehe ich irgendwie nicht...Hab ich irendwelche "/" "\" falsch oder sowas? Die beiden Programme liegen nciht im gleichen Vereichnis. Aber das dürfte doch auch egal sein, oder?

Besten Gruß

Jan
 
Dann sind wohl [c]javac[/c] und [c]java[/c] nicht im PATH. Also entweder statt [c]javac[/c] nimmst du den vollen Pfad [c]C:\Programme\JDK..\bin\javac[/c] oder aber setzt die PATH Variable.
 
Kannst es auch intern Kompieren lassen ;-)

Java:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
CompilationTask task = compiler.getTask(null, null, null, null, null, fileObjects);
System.out.println(task.call());
 
Hallo,

ich bin es nochmal. Mein Code autet mittlerweile so:
PATH war tatsächlich nicht richtig gesetzt. (Wenne es die Umgebungsvariabel ist, die man über den Arbeitsplatz einstellt?)

Java:
    public static void main(String[] args) {
        
        try {
        
            Runtime.getRuntime().exec("C:/Programme/Java/jdk1.6.0_21/bin/javac C:/Dokumente und Einstellungen/admin/Desktop/ASM_JN_14112010_Die_Synthese/src/*.java");
            Runtime.getRuntime().exec("java C:/Dokumente und Einstellungen/admin/Desktop/ASM_JN_14112010_Die_Synthese/scr/StartASM");
            
            System.out.println("ja");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Das einzige was passiert, ist, dass er mir mein "ja" ausgibt. Sonst nix, auch keine Fehlermeldung mehr. Wäre nett, wenn Ihr mir noch einmal einen Tipp geben könntet.

Besten Gruß

Johannes
 
Moin,

und was müsste bei exec passieren ???:L
Läuft der Prozeß im Hintergrund ???:L
Müsste ein Fenster aufgehen ???:L

gruß
Klaus
 
Ach ja,

Java:
C:\Programme\JDK..\bin\javac

akzeptiert er irgendwie nicht.
Java:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:	Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )


heißt es da?

Irgendwie komme ich mit der Maschine nicht klar...

Besten Gruß

Jan
 
Du solltest zunächst mal den ProcessBuilder verwenden um deine Prozesse zu starten.
Weiterhin solltest du nach dem kompilieren warten bis java damit durch ist, stichwort waitFor. Um mögliche Fehler anzuzeigen solltest du den output und errorstream auslesen.
 
Du solltest zunächst mal den ProcessBuilder verwenden um deine Prozesse zu starten.
Weiterhin solltest du nach dem kompilieren warten bis java damit durch ist, stichwort waitFor. Um mögliche Fehler anzuzeigen solltest du den output und errorstream auslesen.

Danke! Was ist denn der "ProcessBuilder" und wo finde ich den?

Output gibt es eigentlich nicht zum auslesen. Der Output wird direkt in eine Textdatei geschrieben und hat u.U. mehr als 45 mio Datenpunkte...Den lese ich eiegntlich nachher nur in R ein.

Besten Dank und Gruß

Jan
 
Der Fehler bei dem JDK Pfad kriegst du übrigens weil du
Code:
\
escapen musst, also:
Code:
c:\\irgend\\ein\\pfad
oder dafür
Code:
System.getProperty("path.separator")
verwenden
 

Zurück
Oben