2012-04-15 10 views
0

Ich habe versucht, die 'jmap -dump: format = b; Datei“-Befehl in Runtime.exec(), aber es wird nicht ausgeführt werden, wenn andere Befehle wie Datum, pwd fein arbeiten. kann jemand wissen, warum?JMAP -Dump nicht auf Java ausgeführt: runtime.exec()

public static void Befehle (String s) {

runtime=Runtime.getRuntime(); 


    try { 
     System.out.println(" Creating Heap Dump "); 
     process=runtime.exec("jmap -dump:format=b,file=D:/heapdump_2012APR10/heapdump_date +%d%b%Y-%H_%M_%S.bin 4478"); 
     System.out.println("Heap Dump Created. Zipping the file"); 
     process=runtime.exec("gzip *.bin"); 
     System.out.println("Succesfully zipped"); 



    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+2

Zeigen Sie den Code an, mit dem Sie ihn aufrufen. –

+1

Eine Lösung ist wahrscheinlich zu finden, indem *** all *** die Empfehlungen von [Wenn Runtime.exec() nicht wird] (http://www.javaworld.com/javaworld/jw-12-2000/) jw-1229-traps.html). –

+0

Code jetzt hinzugefügt .. – Loga

Antwort

0

Sie zwei nacheinander aufrufen verarbeitet

process=runtime.exec("jmap -dump:format=b,file=D:/heapdump_2012APR10/heapdump_date +%d%b%Y-%H_%M_%S.bin 4478"); 
process=runtime.exec("gzip *.bin"); 

ohne darauf zu warten, dass die erste beendet.

Und du dann tun Nimm niemals den Stream der Prozesse auf, die du ausführst, oder überprüfe ihren Beendigungscode.

Also folgen Sie dem Vorschlag von @Andrew Thompson und lesen Sie diese article. Es erklärt sehr gut, wie man einen externen Prozess von Java startet.

+0

Danke, Dash. Aber ich habe einen anderen Fehler namens "Fehler beim Anhängen an die Core-Datei kann nicht an die Core-Datei anhängen". Vielen Dank. – Loga