quelques notes. Les propriétés système sont destinées à cela, mais gardez à l'esprit qu'il s'agit d'une opération privilégiée et que le code applets / webstart / sand box ne pourra pas l'exécuter (obtenant SecurityException). Normalement, vous souhaitez l'exécuter de la même manièreAccessController.doPrivileged(new PrivilegedAction<String>(...));
bestsss
3
@bestsss Bien que certaines propriétés ne sont disponibles que pour les applets qui ont fait confiance: java.specification.version, java.versionet java.vm.versionsont disponibles à un applet de sable boxed, ou tout au moins ils étaient aussi de 1.6.0_23. Voir ma réponse pour plus de détails.
Andrew Thompson
Aussi une chose qui peut fonctionner: java -version:)
Cet appel JMX renvoie l'équivalent de "java.vm.version", et non de "java.version". Ce sont généralement (mais pas nécessairement) les mêmes.
Alex Miller
2
ManagementFactory.getRuntimeMXBean (). GetSpecVersion () peut être plus précis.
auntyellow
Quand sont-ils différents, @AlexMiller? Cela semble intéressant.
DavidS
1
En fait, je dirais qu'ils ne sont pas les mêmes. Le java.vm.version est le numéro de version de jvm, quelque chose comme "25.0-b70" tandis que le java.version est la version normale du langage Java que vous avez l'habitude de voir "1.8.0".
Alex Miller
3
Il convient de noter que Java 9 modifiera la valeur renvoyée par cette chaîne.
AlBlue
54
Il semble que ce java.specification.versionsoit le meilleur pour le travail.
@ User8461 Vous devriez peut-être signaler un bogue à celui qui supervise le JDK ouvert. Pour être honnête, je n'ai pas vu grand chose pour découvrir cette valeur. Le voici actuellement 25.45-b02.. ce qui ne veut rien dire (ne me donne aucune information utile).
Andrew Thompson
53
Utilisation:
System.getProperty("java.version");
Où java.versionpeut être remplacé par l'une des nombreuses autres propriétés système liées à la version Java actuelle. En voici un tableau:
Property Value (OpenJDK 12) Value (Oracle JRE 8u201) Value (Sun JRE 5u22) Description
------------------------------- ----------------------------------------- --------------------------------------- ---------------------------------------------------- ---------------------------------------------------------------------------------------------------------------
java.version "12" "1.8.0_201" "1.5.0_22" Java Runtime Environment version, which may be interpreted as a Runtime.Version
java.version.date "2019-03-19" null null Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD format, which may be interpreted as a LocalDate
java.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Runtime Environment vendor
java.vendor.version null null null Java vendor version
java.vendor.url "https://java.oracle.com/" "http://java.oracle.com/" "http://java.sun.com/" Java vendor URL
java.vendor.url.bug "https://bugreport.java.com/bugreport/" "http://bugreport.sun.com/bugreport/" "http://java.sun.com/cgi-bin/bugreport.cgi" Undocumented
java.specification.name "Java Platform API Specification" "Java Platform API Specification" "Java Platform API Specification" Java Runtime Environment specification name
java.specification.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Runtime Environment specification vendor
java.specification.version "12" "1.8" "1.5" Java Runtime Environment specification version, whose value is the feature element of the runtime version
java.vm.name "OpenJDK 64-Bit Server VM" "Java HotSpot(TM) 64-Bit Server VM" "Java HotSpot(TM) 64-Bit Server VM" Java Virtual Machine implementation name
java.vm.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Virtual Machine implementation vendor
java.vm.version "12+33" "25.201-b09" "1.5.0_22-b03" Java Virtual Machine implementation version which may be interpreted as a Runtime.Version
java.vm.info "mixed mode, sharing" "mixed mode" "mixed mode" Undocumented
java.vm.specification.name "Java Virtual Machine Specification" "Java Virtual Machine Specification" "Java Virtual Machine Specification" Java Virtual Machine specification name
java.vm.specification.vendor "Oracle Corporation" "Oracle Corporation" "Sun Microsystems Inc." Java Virtual Machine specification vendor
java.vm.specification.version "12" "1.8" "1.0" Java Virtual Machine specification version, whose value is the feature element of the runtime version
java.runtime.name "OpenJDK Runtime Environment" "Java(TM) SE Runtime Environment" "Java(TM) 2 Runtime Environment, Standard Edition" Undocumented
java.runtime.version "12+33" "1.8.0_201-b09" "1.5.0_22-b03" Undocumented
java.class.version "56.0" "52.0" "49.0" Java class format version number
jdk.debug "release" null null Undocumented
sun.java.launcher "SUN_STANDARD" "SUN_STANDARD" "SUN_STANDARD" Undocumented
sun.management.compiler "HotSpot 64-Bit Tiered Compilers" "HotSpot 64-Bit Tiered Compilers" "HotSpot 64-Bit Server Compiler" Undocumented
Sources:
Sortie de java -XshowSettings:all -versionpour une variété de versions JVM.
En fonction de ce dont on a besoin, les autres réponses peuvent aider.
Dans mon cas, ils ne l'ont pas fait. Je cherchais les informations de version "pleinement qualifiées" d'un IBM JDK.
Ainsi, la "vraie" réponse peut être: vider simplement toutes les propriétés du système et vérifier s'il y en a une qui vous donne ce que vous recherchez.
Dans mon cas; J'ai constaté que le JDK IBM connaît un
Propriété: java.fullversion
JRE 1.8.0 IBM J9 2.8 Linux amd64-64 Références compressées 20161013_322271 (JIT activé, AOT activé)
Integer vers =Integer.parseInt(System.getProperty("java.version").split("\\.")[1]);String bitMode =System.getProperty("sun.arch.data.model").toString();System.out.println(vers);System.out.println(bitMode);
AccessController.doPrivileged(new PrivilegedAction<String>(...));
java.specification.version
,java.version
etjava.vm.version
sont disponibles à un applet de sable boxed, ou tout au moins ils étaient aussi de1.6.0_23
. Voir ma réponse pour plus de détails.java -version
:)Réponses:
System.getProperty("java.version")
renvoie ce dont vous avez besoin.Vous pouvez également utiliser JMX si vous le souhaitez:
ManagementFactory.getRuntimeMXBean().getVmVersion()
la source
Il semble que ce
java.specification.version
soit le meilleur pour le travail.PAR EXEMPLE
la source
java.vm.version
est nul dans openjdk-11-headless25.45-b02
.. ce qui ne veut rien dire (ne me donne aucune information utile).Utilisation:
Où
java.version
peut être remplacé par l'une des nombreuses autres propriétés système liées à la version Java actuelle. En voici un tableau:Sources:
java -XshowSettings:all -version
pour une variété de versions JVM.System.getProperties()
la source
Simplement une affaire d'appels
System.getProperty("java.version")
.la source
Exemples utilisant
java.version
,java.specification.version
etjava.runtime.version
: Obtenir la version de java au runtime .la source
Le code java ci-dessous renvoie les
JVM
versions disponibles dans votre IDE actuelproduction:
la source
En fonction de ce dont on a besoin, les autres réponses peuvent aider.
Dans mon cas, ils ne l'ont pas fait. Je cherchais les informations de version "pleinement qualifiées" d'un IBM JDK.
Ainsi, la "vraie" réponse peut être: vider simplement toutes les propriétés du système et vérifier s'il y en a une qui vous donne ce que vous recherchez.
Dans mon cas; J'ai constaté que le JDK IBM connaît un
Propriété: java.fullversion
la source
Appelez simplement,
Exemple de sortie:
la source
Les informations sur les versions sont stockées en tant que propriétés de
System
classe.http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29
la source
System.getProperty ("sun.arch.data.model");
Contrôle Java 32 bits et 64 bits
Production :
la source