java -version &> version.txt
Der Exit-Code hat nichts damit zu tun, wo er ausgegeben wird.
Entweder mache ich etwas Dummes oder Sun ist es. Wie kommt so etwas wie:
java -version > version.txt
Wird noch in stdout ausgegeben und version.txt leer gelassen? Ich checke den Exit-Code aus, und es ist immer noch 0, also schreibt Stderr nicht.
Ich brauche das, weil ich ein Testumgebungstool baue und überprüfen möchte, ob die Version von Java ausreichend ist. Ich hatte vor, diese Version der Version zu erfassen, aber jetzt bin ich festgefahren.
Ich bin auf OS X Leopard, Java Version 1.6.0_20.
Irgendwelche Ideen?
java -version &> version.txt
Der Exit-Code hat nichts damit zu tun, wo er ausgegeben wird.
Es ist heutzutage eine Art Funktion. ;-)
Aus einem alten Fehlerbericht :
Wir sollten sehr genau überlegen, bevor wir diesen Fehler beheben. Es ist offensichtlich falsch, Versionsinformationen an stderr zu drucken, aber da wir dies seit Beginn der Zeit tun, ist es wahrscheinlich, dass wir bestehende Systeme, die auf Java basieren, brechen, wenn wir sie jetzt ändern. Wenn wir uns entschließen, dies zu ändern, muss es bis zur Veröffentlichung des Tigers warten, damit angemessene Tests durchgeführt werden können.
Nur als Ergänzung zu Ignacios Antwort:
Das Parsing der Ausgabe von java -version
ist ziemlich komplex und fehleranfällig (und es ist nicht garantiert, dass die Ausgabe immer dasselbe Format hat, insbesondere bei Nicht-Sun-JVMs).
Um die Java-Version zu überprüfen, können Sie ein kleines Java-Programm ausführen, das die entsprechenden Systemeigenschaften überprüft: Siehe Javadocs für getProperties () . Dies ist der offizielle, dokumentierte Weg, um Informationen über die Java-Umgebung zu erhalten. Sie möchten wahrscheinlich prüfen: