Java version check exit kode i Windows ændret i Java 7?

Indlæg af Hanne Mølgaard Plasc

Problem



Kør følgende i Windows:


java -version:1.5+


echo \%ERRORLEVEL\%


Hvis du kører det med Java 5 eller Java 6, får du en exitkode på 0, hvilket betyder, at succes (hvilket betyder, at versionen er mindst 1,5).


Hvis du kører det med Java 7, får du exit kode 1, hvilket betyder fejl.


Enhver løber ind i dette og ved hvad der skete?

Bedste reference


-version:<value> syntaks er beregnet til at anmode launcher om at gøre noget med specifik version af JVM. Dvs. Kør dit Java-program eller udskriftsversion (-?). Men målet er ikke angivet, og det er en fejl. Launcher udskriver brugen og returnerer 1. Samme som at køre almindelig java.exe uden nogen parametre. Jeg tror, ​​at adfærd iagttaget i tidligere udgivelser er bare en mindre fejl i Java 7.


EDIT Du kan køre java -version:1.5+ -version. Dette kræver, at launcher check tilgængelige VM'er og udskriftsversion (det er altid en succesfuld operation). Mindre verbose end -? mulighed.


Den anden mulighed er at skabe nogle stub klasse med hovedmetode, der ikke vil gøre noget. Derefter bliver den vellykkede tjek helt tavs. java -version:1.5+ your.stub.MainClass