Estoy tratando de usar Notepad ++ como mi herramienta todo en uno para editar, ejecutar, compilar, etc.
Tengo JRE instalado y configuré mi variable de ruta al .../bin
directorio.
Cuando ejecuto mi "Hola mundo" en Notepad ++, recibo este mensaje:
java.lang.UnsupportedClassVersionError: test_hello_world :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
.........................................
Creo que el problema aquí es sobre las versiones; Algunas versiones de Java pueden ser antiguas o demasiado nuevas.
- ¿Cómo lo soluciono?
- ¿Debo instalar el JDK y configurar mi variable de ruta al JDK en lugar de JRE?
- ¿Cuál es la diferencia entre la
PATH
variable en JRE o JDK?
Respuestas:
El número de versión que se muestra describe la versión de JRE con la que el archivo de clase es compatible.
Los números principales informados son:
(Fuente: Wikipedia )
Para solucionar el problema real, debe intentar ejecutar el código Java con una versión más reciente de Java JRE o especificar el parámetro de destino al compilador de Java para indicarle que cree un código compatible con versiones anteriores de Java.
Por ejemplo, para generar archivos de clase compatibles con Java 1.4, use la siguiente línea de comando:
Con las versiones más recientes del compilador de Java, es probable que reciba una advertencia sobre la ruta de clase de rutina de carga no establecida. Más información sobre este error está disponible en una publicación de blog Nueva advertencia de javac para configurar una fuente anterior sin bootclasspath .
fuente
java.lang.UnsupportedClassVersionError
sucede debido a un mayor JDK durante el tiempo de compilación y menor JDK durante el tiempo de ejecución.fuente
/etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
) a la versión utilizada para la compilación con javac lo resolviósudo update-alternatives --config java
hacerlo.En Eclipse, simplemente fui al comando de menú Ventana -> Preferencias -> Java -> Compilador y luego configuré el "Nivel de cumplimiento del compilador" en 1.6.
fuente
No te preocupes, lo tengo resuelto.
En realidad es simple: debe instalar AMBOS JRE / JDK con la misma versión.
JRE 6 -> JDK 6
JRE 7 -> JDK 7
Y así.
fuente
Este error significa que está intentando cargar un archivo de "clase" de Java que se compiló con una versión más nueva de Java que la que ha instalado.
Por ejemplo, su
.class
archivo podría haber sido compilado para JDK 7 y está intentando ejecutarlo con JDK 6.Entonces la solución es:
Vuelva a compilar la clase si tiene la fuente, utilizando su compilador Java local (si tiene una).
javac FileName.java
Para los desarrolladores, esto puede suceder si otro desarrollador registra un archivo .class, ¡y tienen una versión más nueva de Java que usted!
fuente
Está intentando ejecutar su programa con una versión de Java que no admite la versión en la que se compiló el código. Entonces, básicamente, debe haber compilado su código con una versión superior e intentar ejecutarlo con una versión inferior.
Como estas obteniendo
y la versión 51.0 corresponde a J2SE 7, lo más probable es que haya compilado su código en Java 7 e intente ejecutarlo con una versión inferior. Comprueba lo que se
java -version
muestra. Debería ser la versión Java 7. Si no, realice los cambios apropiados en PATH / JAVA_HOME. O puede compilar con la misma versión que está intentando ejecutar el código. Si las configuraciones son confusas, siempre puede dar una ruta absoluta/home/user/jdk1.7.0_11/bin/javac
y/home/user/jdk1.7.0_11/bin/java
.fuente
Tuve una situación similar en Mac, y el siguiente proceso funcionó para mí:
En la terminal, escriba
Luego agregue esta línea en el archivo y guarde
donde la versión es la de su computadora, como
1.7.0_25
.Salga del editor, luego escriba el siguiente comando para que sea efectivo
Luego escriba java -version para verificar el resultado
¿Qué es el
.profile
archivo?Fuente: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515
fuente
En la ventana del menú de Eclipse -> Preferencias -> Java -> Compilador verifique también "Configurar opciones específicas del proyecto".
Si todavía tiene el error con la misma versión de Java: intente eliminar la carpeta de compilación de su proyecto manualmente. Luego reinicie Eclipse.
fuente
Puede tener alguna biblioteca JAR compilada en Java 7, y solo tiene Java 6 como Java Runtime. Podría suceder con algunas bibliotecas nuevas.
fuente
El problema más común es la configuración incorrecta de su
JAVA_HOME
variable que debe apuntar a la biblioteca correcta del Kit de desarrollo de Java, si tiene varias instaladas.Para encontrar dónde se encuentra la carpeta SDK Java, ejecute los siguientes comandos:
Debian / Ubuntu
Para verificar qué java (openjdk) ha instalado, verifique a través de:
o:
Para cambiarlo, use:
Prefijo con
sudo
si es necesario.para seleccionar la versión alternativa de java.
O compruebe cuáles están disponibles para instalar:
Prefijo con
sudo
si es necesario.Luego puede instalar, por ejemplo:
Prefijo con
sudo
si es necesario.Fedora, Oracle Linux, Red Hat
Instale / actualice el paquete apropiado a través de:
BSD
Hay un paquete OpenJDK 7 en la colección de puertos de FreeBSD llamado openjdk7 que probablemente necesita ser reconfigurado.
Ver: página wiki de OpenJDK .
Ventanas
Simplemente instale la biblioteca de Java SE Development Kit adecuada desde el sitio de Oracle o instálela
Jenkins
Si tiene este problema con Jenkins, consulte:
Sin embargo, la selección de la versión correcta de Java (más reciente) con
update-alternatives
debería funcionar.fuente
Me enfrenté al mismo problema cuando estaba trabajando con un script Ant para construir mi aplicación.
Yo uso Eclipse para el desarrollo de mi aplicación, y cambié la versión del compilador en las propiedades de compilación del proyecto. Pero eso no funcionó para mí. Luego descubrí que puedo proporcionar la versión del compilador en el script Ant.
Modifiqué el script Ant en la sección donde compila archivos Java.
Esto funcionó para mí para resolver el problema menor importante no admitido.
fuente
Cuando instalé JDK 1.7, el problema se resolvió.
fuente
Tuve el mismo problema con un proyecto escrito en 1.7 e intenté ejecutarlo en 1.6.
Mi solución en Eclipse:
Haga clic derecho en las Propiedades del proyecto -> Ruta de compilación de Java -> Bibliotecas
Seleccione su Biblioteca del sistema JRE y haga clic en Editar a la derecha, y elija el JRE de destino.
Ahora vaya al compilador de Java a la izquierda y cambie el nivel de cumplimiento del compilador a su objetivo.
Eso funcionó para mí.
fuente
Como respondieron varias personas en otras partes, el programa Java se ejecuta en una versión anterior de Java para la que fue compilada. Debe ser "compilado cruzado" para la compatibilidad con versiones anteriores. Para decirlo de otra manera, hay una discrepancia entre las versiones de origen y destino de Java.
El cambio de opciones en los menús de Eclipse no responde al póster original, quien dijo que él / ella no está usando Eclipse. En OpenJDK javac versión 1.7, puede realizar una compilación cruzada para 1.6 si usa parámetros
-source
y-target
, además, proporciona el archivo rt.jar de la versión de destino (es decir, la anterior) en tiempo de compilación. Si realmente instala el 1.6 JRE, puede apuntar a su instalación (por ejemplo, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar en Ubuntu, / usr / jdk / jdk1. 6.0_60 / jre / lib / rt.jar en SunOS aparentemente. Lo siento, no sé dónde está en un sistema Windows). Al igual que:Parece que puedes descargar rt.jar de Internet y señalarlo. Sin embargo, esto no es demasiado elegante:
fuente
Basado en esto...
En Eclipse, haga clic derecho en el proyecto en el explorador de paquetes:
Ruta de compilación -> Configurar ruta de compilación
Debajo:
Ruta de compilación de Java -> Bibliotecas -> Agregar biblioteca -> Biblioteca del sistema JRE -> JRE instalados -> Buscar .
Agregue el JRE requerido seleccionando la biblioteca en la lista disponible después de completar la búsqueda.
fuente
Si usa Maven, configure su nivel de compilación de Java. Abra una línea de comando y escriba
java -version
para su nivel de compilación:Si utiliza IntelliJ IDEA, seleccione Proyecto → Archivo → Configuración → Construir ejecución de despliegue → Compilador → compilador Java . Luego cambie el código de bytes como 1.7 como esta imagen:
fuente
Si enfrenta este problema mientras usa Maven , puede compilar su código usando el compilador de Maven .
ACTUALIZACIÓN: establecer
source
ytarget
para1.8
, si está utilizando JDK 8.fuente
Recibí el mismo mensaje de error cuando ejecuté Ant desde Eclipse, pero las otras soluciones mencionadas aquí no resolvieron mi problema. Lo curioso fue que ejecutar Ant desde la línea de comandos de Windows funcionaba bien, por lo que tenía que ser un problema de configuración dentro de Eclipse.
Resultó que bajo Eclipse puede especificar el entorno con el que Ant debería estar ejecutándose y esto se configuró como un JRE en lugar de un JDK.
fuente
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 yjava -version
para el tiempo de ejecución.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.
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 laPATH
variable, de izquierda a derecha, para encontrar eljava
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 esjava
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 tengajava
instalada la misma versión , pero que otra versión anteriorjava
esté apareciendo anteriormente en la RUTA y se invoque en lugar de la que espera .fuente
Ha utilizado una versión superior de JDK para compilar e intentar ejecutar desde una versión inferior de JDK / JRE .
Para verificar esto, vea la información de la versión:
Serán diferentes y javac tendrá un número de versión más alto.
Para evitar esto, ejecute usando Java desde la versión JDK o si tiene un JRE / JDK más nuevo que funcionará también.
which javac
le dirá la ubicación, por ejemplo/usr/bin/javac
,. Solo corre directamente usando/usr/bin/java <program>
.O puede configurar la variable de entorno como una solución permanente.
fuente
Tuve este problema cuando volví a Java 6 e intenté ejecutar clases previamente compiladas con Java 7. Lo que funcionó para mí fue Preferencias> java> compilador -> establecer el nivel de cumplimiento en 1.6 y crucialmente "configurar los ajustes del proyecto".
fuente
Hoy, este mensaje de error apareció en nuestro Tomcat 7 en Ubuntu 12.04.2 LTS (Precise Pangolin):
La aplicación Struts está compilada con Java 7.
Resultó que alguien usa "service tomcat [stop / start]" para reiniciar Tomcat 7,
Lo que provoca el error "Versión de major.minor 51.0 no compatible".
Cuando utilizamos "/etc/init.d/tomcat7 [stop / start]" para reiniciar Tomcat 7, el problema se resolvió.
fuente
Lo resolví Corrí:
El error es engañoso,
Unsupported major.minor version 51.0
. Esto da la impresión de que la versión 51 (Java 7) no es compatible. Y deberíamos usar Java 6.El error debería haber sido:
fuente
Su archivo Java está compilado con una versión diferente (versión de compilador superior) que la versión (versión de tiempo de ejecución inferior) con la que está intentando ejecutarlo.
Es básico entender que se espera que las clases compiladas con versiones inferiores se ejecuten en las versiones posteriores posteriores. Pero lo contrario (compilado con una versión de compilador superior e intentando ejecutarlo con una versión de tiempo de ejecución inferior) a veces no es posible.
Por lo tanto, se muestra este error al intentar ejecutar su programa. Versión principal x menor no admitida xx
(Fuente: oracle.com .)
fuente
Oh Mac OS XI pude resolver este problema configurando la variable JAVA_HOME:
fuente
Primero veamos algunos conceptos básicos ...
JRE es un componente en NetBeans / Eclipse / autónomo que le proporcionará bibliotecas, JVM, complementos de Java e inicio web de Java. Tenga en cuenta que no proporciona cumplidores o depuradores.
JDK es el superconjunto de JRE junto con compiladores y depuradores.
Entonces, cuando tenga su biblioteca predeterminada como JRE en lugar de JDK, pasará un buen rato importando cosas, pero no se compilará.
En su lugar, configure su ruta a JDK (uso NetBeans, y los configuro usando netbeans.conf en netbeans / etc / netbeans.conf y cambio la ruta).
fuente
Tuve el problema de que tenía que ejecutar una compilación de Maven en mi proyecto desde la línea de comandos para ejecutar mis pruebas unitarias; si realicé un cambio en la clase de prueba y dejé que Eclipse lo recompilara automáticamente, entonces recibí el error "Versión de major.minor 51.0 no compatible".
Tengo instalados JDK6 y JDK7, pero todos mis ajustes de JRE apuntaban a 1.6, tanto en el pom como en la página de propiedades del proyecto en Eclipse. Ninguna cantidad de Maven Update Project y / o refrescante resolvió esto.
Finalmente intenté cerrar el proyecto y volver a abrirlo, ¡y esto pareció solucionarlo! HTH
fuente
Ha compilado su clase Java con JDK 7 e intenta ejecutar la misma clase en JDK 6.
fuente
fuente
La respuesta es para el problema:
Excepción en el hilo "main" java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: Unsupported major.minor versión 52.0
Estaba teniendo el mismo problema. Para aquellos que estaban teniendo este problema en las instancias de AWS ec2, y de alguna manera han sido redirigidos aquí a esta pregunta. Estoy respondiendo por eso, y me gustaría compartirlo como lo hice. Estaba teniendo problemas porque las instancias de Amazon EC2 ejecutaban Java versión 1.7 y tal vez mi proyecto no era compatible porque estaba usando Maven y estaba preconfigurado para Java 1.8. Así que instalé una nueva versión de Java:
sudo yum -y install java-1.8.0
Y luego el paso importante es eliminar la versión anterior:
Recuerde eliminarlo después de instalar la nueva versión, de lo contrario, usaría continuamente la misma versión anterior y espero que resuelva su problema, que lo hizo en mi caso.
fuente