Runtime.getRuntime().exec " escapen?

Thallius

Top Contributor
Ich habe da ein komisches Verhalten der exec Funktion.

Ich habe eine .jar die erwartet einen Pfad als Parameter. Wenn ich die Datei so aufrufe

java -jar egal.jar "/egal/total egal/noch egaler/am egalsten.ega"

dann erhalte ich in der main Methode ein

args.length = 1 und
args[0]=/egal/total egal/noch egaler/am egalsten.ega (Man beachte die Anführungszeichen sind nicht Bestandteil des Argumentes, was ja auch richtig ist)

Rufe ich die jar aber mit

Runtime.getRuntime().exec("java -jar egal.jar \"/egal/total egal/noch egaler/am egalsten.ega\"")

auf, dann erhalte ich

args.length = 4 und
args[0]="/egal/total
args[1]=egal/noch
args[2]=egaler/am
args[3]=egalsten.ega

Was muss ich also machen um die " richtig zu escapen?

Gruß

Claus
 

Thallius

Top Contributor
Ja ich hatte auch erst überlegt mein Post wieder zu löschen als ich die Lösung direkt gefunden habe nachdem ich vorher immer nach den falschen Stichworten gegooglt habe. Aber vielleicht hilft es mal jemadem also lassen wir es stehen :)

Trotzdem Danke

Claus
 
Zuletzt bearbeitet:

taro

Bekanntes Mitglied
warum nutzt du eigentlich keinen ProcessBuilder? :)

ProcessBuilder (Java Platform SE 7 )

EDIT: Kleiner Wink am Rande: Für das "starten und vergessen" einer externen Anwendung nutze ich meist noch ein
Code:
cmd /c start anwendung.exe irgendwelche_parameter
 
Zuletzt bearbeitet:

taro

Bekanntes Mitglied
Hallo Claus,

ich gebe zu, deine Mac-Affinität habe ich nicht bedacht - trotzdem stellt sich für mich immer noch die Frage, was dich an einer Verwendung von ProcessBuilder hindert - dieser sollte, soweit ich mich entsinne, plattformunabhängig sein.

Viele Grüße
Sven
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Hallo Claus,

ich gebe zu, deine Mac-Affinität habe ich nicht bedacht - trotzdem stellt sich für mich immer noch die Frage, was dich an einer Verwendung von ProcessBuilder hindert - dieser sollte, soweit ich mich entsinne, plattformunabhängig sein.

Viele Grüße
Sven

Meine Affinität ist hierbei leider sehr irrelevant. Der Kunde will das die App auf allen drei OS läuft. Deshalb mache ich sie ja überhaupt in Java. Sonst hätte ich direkt zu C/C++ gegriffen, was ich deutlich angenehmer finde ;)

Was für einen Vorteil bringt mir der ProcessBuilder denn? Wenn man es sich auf die schnelle ansieht, sieht es eigentlich genauso aus, ausser das man da direkt die PArameter angiebt und beim exec halt in einem String Array.

Gruß

Claus
 

taro

Bekanntes Mitglied
Ich muss da doch mal ein wenig zurückrudern - das kommt davon, wenn man sich um Plattformunabhängigkeit keinen Kopf zu machen braucht.

Im Gegensatz zum ProcessBuilder ist das ausführen externer Programme mit exec() unabhängig(er) vom verwendeten System, auch wenn die Kontrollmöglichkeiten eingeschränkt sind - wieder was gelernt.

Grüße
Sven
 

arilou

Bekanntes Mitglied
Man beachte aber auch, dass .exec stdout und stderr in InputStreams puffert, und dafür wohl 64k Pufferspeicher vorhält. Wenn die voll sind, wird der Unterprozess angehalten, bis das Java-Programm die Puffer geleert hat - und sei's bis Sankt Nimmerlein.
D.h. man braucht einen nebenläufigen Thread, der sich die Streams von dem Prozess greift, den .exec zurückliefert, und der schön die Ausgaben pollt; und auch wieder schön beendet wird, wenn das Unterprogramm zu Ende ist.

PS: Zumindest unter Windoof/JVM von Oracle. Linux müsst' ich erst ausprobieren, für Mac-Zeug fehlt mir ein Zugang/Hardware...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
I Runtime.getRuntime().exec Problem Allgemeine Java-Themen 4
truesoul Runtime.getRuntime().exec nebenbei ausführen Allgemeine Java-Themen 12
Z Runtime.getRuntime().exec-Problem Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(cmd); auf windows ... Allgemeine Java-Themen 2
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
G Output eines über Runtime.getRuntime.exec gestarteten Jars Allgemeine Java-Themen 6
W Runtime.getRuntime().exec() Allgemeine Java-Themen 10
C JApplet und Runtime.getRuntime().exec() Allgemeine Java-Themen 2
M Probleme Runtime.getRuntime().exec(Start.cmd); Allgemeine Java-Themen 10
K Probleme mit Runtime.getRuntime().exec Allgemeine Java-Themen 6
A Runtime.getRuntime().exec mit Warte auf Beendigung - Wie? Allgemeine Java-Themen 7
R Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
B Probleme mit Runtime.getRuntime().exec("cmd.exe") Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(txt_rsync_option.getText()); Allgemeine Java-Themen 12
M Rückgabewert von Runtime.getRuntime().exec() Allgemeine Java-Themen 2
D Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 14
L Runtime.getRuntime.exec() Allgemeine Java-Themen 7
X Problem mit Runtime.getRuntime().exec("cls"); Allgemeine Java-Themen 18
S Runtime.getRunTime().exec("jar cvf .) hängt sich auf Allgemeine Java-Themen 3
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
B Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
G Runtime.getRuntime().exec("cmd /c START") Allgemeine Java-Themen 3
S Runtime.getRuntime()... Allgemeine Java-Themen 6
G Runtime.getRuntime() Allgemeine Java-Themen 10
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
C Runtime Problem Allgemeine Java-Themen 1
P programm öffnen mit der runtime Allgemeine Java-Themen 9
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Runtime bzw. RAM-Auslastung eines Prozesses Allgemeine Java-Themen 9
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
T Bluescreen bei Runtime.exec(); Allgemeine Java-Themen 8
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
N Runtime.exec() Allgemeine Java-Themen 7
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
N Internet Explorer mit bestimter Java Runtime starten Allgemeine Java-Themen 2
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
V Probleme mit Runtime.exec() Allgemeine Java-Themen 3
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
S Rückgabewert runtime Allgemeine Java-Themen 11
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
T Runtime.exec() Allgemeine Java-Themen 3
W java ohne runtime Allgemeine Java-Themen 2
N runtime.exec() Problem Allgemeine Java-Themen 6
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
K Runtime.exec mit Timeout Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
G Runtime? Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
F Problem mit Runtime.exec() Allgemeine Java-Themen 8
S Problem mit Runtime. Allgemeine Java-Themen 2
E Programm mit der Runtime ausführen Allgemeine Java-Themen 8
M Runtime & Exception Allgemeine Java-Themen 3
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
W In Runtime Output schreiben Allgemeine Java-Themen 5
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
M Runtime.exec unter Vista (Administrator Rechte) Allgemeine Java-Themen 2
T ausführbares jar File mit integriertem Java Runtime 6+JOGL Allgemeine Java-Themen 7
the[V]oid Ausführen von "javac" über Runtime.exec() Allgemeine Java-Themen 4
W Runtime Error216 Runtime error 217 Allgemeine Java-Themen 6
B Runtime Verzeichniss wechseln Allgemeine Java-Themen 8
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
T Runtime.exec -> Prozesskontrolle abgeben ? Allgemeine Java-Themen 11
G Programm wird von java cmd runtime nicht aufgerufen? Allgemeine Java-Themen 13
S Runtime.exec() berechtigungen Allgemeine Java-Themen 5
S Runtime.exec und X Umgebung Allgemeine Java-Themen 2
A Runtime Process bricht nicht ab! Allgemeine Java-Themen 7
F Shell-Programme per Runtime.exec() starten und mehr? Allgemeine Java-Themen 4
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
P Copy mit Runtime.exec() unter Unix Allgemeine Java-Themen 4
T Probleme mit Runtime.exec in Jar File Allgemeine Java-Themen 2
M Runtime.exec unter Linux Allgemeine Java-Themen 11
G Java Runtime Verzeichnis ermitteln Allgemeine Java-Themen 3
9 J2SE Runtime Environment 5.0 Allgemeine Java-Themen 6
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
S dvbscan mit Runtime.getInstance().exec() ausführen ? Allgemeine Java-Themen 24
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
S Programm starten mit Runtime aktuelles Verzeichnis wechseln Allgemeine Java-Themen 7
K getRuntime().exec() untersagen Allgemeine Java-Themen 6
O getRuntime().Exec() - Environment - Variablen setzen? Allgemeine Java-Themen 2
L getRuntime.exec() Problem mit Hochkommata Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben