¿Cómo lo soluciono?
Este error significa que el JRE que se está utilizando para ejecutar su código de clase no reconoce la versión de Java utilizada. Por lo general, porque la versión de Java que generó su archivo de clase (es decir, lo compiló) es más nueva.
Para solucionarlo, puedes
a) Compile sus fuentes Java con la misma versión, o anterior, del compilador Java que se utilizará para ejecutarlo. es decir, instale el JDK apropiado.
b) Compile sus fuentes de Java con la versión más reciente del compilador de Java pero en modo de compatibilidad. es decir, usar el -target
parámetro.
c) Ejecute sus clases compiladas en un JRE que sea la misma o más nueva versión que el JDK utilizado para compilar las clases.
Puede verificar las versiones que está utilizando actualmente
javac -version
para el compilador y java -version
para el tiempo de ejecución.
¿Debo instalar el JDK y configurar mi variable PATH en el JDK en lugar de JRE?
Para la compilación, ciertamente, instale y configure el JDK específico que desea.
Para el tiempo de ejecución, puede usar el que viene con el JDK o un JRE independiente, pero independientemente, asegúrese de haber instalado las versiones correctas y de haber configurado su RUTA para que no haya sorpresas.
¿Cuál es la diferencia entre la variable PATH en JRE o JDK?
La variable de entorno PATH le dice al shell de comandos dónde buscar el comando que escribe. Cuando escribe java
, el intérprete de shell de comandos buscará en todas las ubicaciones especificadas en la PATH
variable, de izquierda a derecha, para encontrar el java
ejecutable de tiempo de ejecución apropiado para ejecutar. Si tiene instaladas varias versiones de Java, es decir, tiene eljava
ejecutable en varias ubicaciones especificadas en la variable PATH, entonces la primera que se encuentre al ir de izquierda a derecha será la que se ejecute.
El comando del compilador es javac
y solo viene con el JDK. El comando de tiempo de ejecución es java
y viene con el JDK y está en el JRE.
Es probable que tenga javac
instalada una versión (51.0 = Java 7) , y que también tenga java
instalada la misma versión , pero que otra versión anterior java
esté apareciendo anteriormente en la RUTA y se invoque en lugar de la que espera .