Tal vez esto ayude a alguien, también. Parece que hay una forma más fácil de obtener la versión JAVA utilizada para compilar/construir .class.De esta manera es útil para la autocomprobación de clase/aplicación en la versión de JAVA.
que han pasado por la biblioteca JDK y encontrado esta constante útil: com.sun.deploy.config.BuiltInProperties.CURRENT_VERSION. No sé desde cuándo está en JAVA JDK.
Tratando este pedazo de código para varias constantes versión que recibo como resultado a continuación:
src:
System.out.println("JAVA DEV ver.: " + com.sun.deploy.config.BuiltInProperties.CURRENT_VERSION);
System.out.println("JAVA RUN v. X.Y: " + System.getProperty("java.specification.version"));
System.out.println("JAVA RUN v. W.X.Y.Z: " + com.sun.deploy.config.Config.getJavaVersion()); //_javaVersionProperty
System.out.println("JAVA RUN full ver.: " + System.getProperty("java.runtime.version") + " (may return unknown)");
System.out.println("JAVA RUN type: " + com.sun.deploy.config.Config.getJavaRuntimeNameProperty());
de salida:
JAVA DEV ver.: 1.8.0_77
JAVA RUN v. X.Y: 1.8
JAVA RUN v. W.X.Y.Z: 1.8.0_91
JAVA RUN full ver.: 1.8.0_91-b14 (may return unknown)
JAVA RUN type: Java(TM) SE Runtime Environment
En el código de bytes de clases no es realmente constante almacenada - vea la parte roja marcada de Main.call - constant stored in .class bytecode
constante está en la clase utilizada para comprobar si la versión de Java no está actualizado (ver How Java checks that is out of date) ...
duplicado más populares http://stackoverflow.com/questions/1096148/how-to-check-the -jdk-version-used-to-compile-a-class-file tiene como respuesta algunas herramientas útiles que no se mencionan aquí. – Vadzim