exec() javac aus jar

Cymatoxa

Mitglied
Servus zusammen,

als kleine Fingerübung wollte ich ein Programm schreiben, welches Javaklassen zur Laufzeit nachladen kann.
Dazu starte ich javac ("C:\Program Files\Java\jdk1.8.0_05\bin\javac.exe") über Runtime.getRuntime().exec() bzw. über den ProcessBuilder (gleiches Ergebnis soweit). Das funktioniert auch wunderbar - jedenfalls innerhalb der IDE.
Wenn ich daraus jetzt aber eine *.jar mache, wollen beide Möglichkeiten nicht mehr funktionieren - ich erhalte in exec() eine Exception mit der meldung "Das System kann die angegebene Datei nicht finden".
Ich hatte die Vermutung, dass es an dem Leerzeichen im Pfad bei "Program Files" liegt. Deshalb meine Versuche bisher:
- Gesamten Pfad Quoten
- Nur Program Files quoten
- Program Files durch PROGRA~1 ersetzen
Es funktioniert weiterhin perfekt in der IDE, aber nicht, wenn ich die jar ausführe :confused: Habt ihr zufällig Ideen dazu?

Schöne Grüße,
Cymatoxa
 
Hi,
in java hab ich die Backslashes natürlich escaped ("\\"), das mit %20 werde ich gleich mal ausprobieren, aber das war nur in URLs so, oder?
Danke für die schnelle Antwort und schöne Grüße,
Cymatoxa

Edit: das Ersetzen des Leerzeichens hilft leider nicht. Wenn ich das Versuche bekomm ich auch beim Ausführen von der IDE aus die Meldung, dass die Datei nicht gefunden wird.
 
Tatsache, tausend Dank, ComFreek! :)
In der IDE kümmert sich wohl das JDK selbst um das Ausführen, während beim *.jar natürlich das JRE augeführt wird.
Das erlärt den Fehler zwar noch nicht, da beides bei mir version 1.8 ist, aber es grenzt ihn stark ein.
Schönes Restwochenende,

Cymatoxa
 
Zurück