Process output

Status
Nicht offen für weitere Antworten.

Campino

Top Contributor
Code:
Runtime runtime=Runtime.getRuntime();
		
		try{
			Process p=runtime.exec("java -help");
			BufferedReader bs=new BufferedReader(new InputStreamReader(p.getInputStream()));		
			String line;
			while((line=bs.readLine())!=null){
				System.out.println(line);
			}
		}catch(IOException e){
			System.out.println(e.toString());
		}

liefert die erwartete Ausgabe, aber wenn ich das -help gegen -version ersetze, kommt gar keine Ausgabe mehr. Wenn ich java -version in der Konsole eingebe, kommt erwartungsgemäß die Java-Versionsnummer und so. Warum liefert das Programm dann keine Ausgabe...
 
Hab dein Prog jetzt nicht getestet, aber warum nicht einfach so:
Code:
System.getProperty("java.vm.version")
 
Habe gerade mal was probiert und was merkwürdiges raugefunden:
Code:
try {
  Process p = runtime.exec( "java -version" );
  String line;
  BufferedReader bs;

  // Input-Stream
  System.out.println("<Input>");
  bs = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
  while( ( line = bs.readLine() ) != null ) {
    System.out.println( line );
  }
  System.out.println("</Input>");

  // Error-Stream
  System.out.println("<Error>");
  bs = new BufferedReader( new InputStreamReader( p.getErrorStream() ) );
  while( ( line = bs.readLine() ) != null ) {
    System.out.println( line );
  }
  System.out.println("</Error>");
} catch( IOException e ) {
  System.out.println( e.toString() );
}

Probiers mal aus und staune; sobald Du es verstanden hast, warum es so ist, bitte bei mir melden 🙂
 
Das ist halt weil das eben kein "normaler" Output eines Programmes ist, sondern ein speziell Angeforederter...Da halt nur zwei Streams vorhanden sind, wirds halt auf stderr geschrieben (Was aber nicht heisst, dass es als Error angesehen werden muss)....
 
meez hat gesagt.:
Das ist halt weil das eben kein "normaler" Output eines Programmes ist, ....

HÄ? Muss ich das verstehen??

"-help" ist somit "normaler" Output (da INPUT) und "-version" ist kein normaler Output (da ERROR)?
Ich würde aber die beiden Ausgaben gleich setzen; d.h. wenn "-version" ein speziell Angeforederter Output ist, so gilt dies doch wohl auch für "-help"!?
 
sky80 hat gesagt.:
"-help" ist somit "normaler" Output (da INPUT) und "-version" ist kein normaler Output (da ERROR)?
Ich würde aber die beiden Ausgaben gleich setzen; d.h. wenn "-version" ein speziell Angeforederter Output ist, so gilt dies doch wohl auch für "-help"!?

Nein...Wenn help auftaucht, läuft das Program sowieso nicht weiter...Bei Version kann es auch -showversion sein, d.h. man trennt einfach die "normalen" Ausgaben des Programmes und der VM...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben