java - studio - the compiler compliance specified is 1.6 but a jre 1.8 is used
¿Cómo puedo obtener eclipse para usar una versión de compilador diferente para Java? (5)
Parece que esto debería ser una tarea simple, con las opciones en el menú Preferencias para diferentes JRE y la capacidad de establecer diferentes compiladores y rutas de compilación por proyecto. Sin embargo, también parece simplemente no funcionar.
Por ejemplo, tengo mi JAVA_HOME configurado como jre para Java 1.6. Aún no está claro cómo lo usa Eclipse, pero parece que no está tomando esto en cuenta y no toma las anulaciones del proyecto. También instalé Java 1.5 y agregué un JRE para esto en eclipse en la sección Java-> JREs instalados.
En mi proyecto, establecí el nivel de cumplimiento del compilador en 1.5. En la ruta de compilación para el proyecto, he agregado la Biblioteca del sistema para Java 1.5 JRE. Sin embargo, recibo errores de compilación para una clase que implementa PreparedStatement para no implementar métodos abstractos que solo existen en Java 1.6 PreparedStatement. Específicamente, los métodos
setAsciiStream(int, InputStream, long) and
setAsciiStream(int, InputStream)
Curiosamente, funcionó cuando lo compilamos contra Java 1.4, para el cual fue originalmente escrito. Agregamos los JRE para Java 1.4 y hicimos referencia a esa biblioteca de sistema en el proyecto, y establecimos el nivel de compilador del proyecto en 1.4, y funciona bien. Pero cuando hago los mismos cambios para tratar de apuntar a Java 1.5, en su lugar usa 1.6.
¿Alguna idea de por qué?
Desde la barra de menú: Proyecto -> Propiedades -> Compilador Java
Habilitar configuraciones específicas del proyecto (marcadas) Desmarque "usar Cumplimiento del entorno de ejecución" .... Seleccione el "nivel de cumplimiento del compilador" deseado
Eso le permitirá compilar el código "1.5" con un "JDK 1.6".
Si desea utilizar un 1.5 JDK para producir un código compatible con "1.5", instale un 1.5 JDK adecuado y diga a eclipse dónde está instalado a través de:
Ventana -> preferencias -> JRE instalados
Y luego regrese a su proyecto
Proyecto -> propiedades -> Java Build Path -> libraries
elimine las 1.6 bibliotecas del sistema y agregue la biblioteca ... -> JRE System LIbrary -> Alternate JRE -> The JRE que desea.
Verifique que el JRE correcto esté en la ruta de compilación del proyecto, guarde todo y ¡disfrútelo!
Eclipse usa su propio compilador interno que puede compilar varias versiones de Java.
Ayuda de Eclipse> Guía del usuario de desarrollo Java> Conceptos> Java Builder
El constructor de Java crea programas Java utilizando su propio compilador (el compilador Eclipse para Java) que implementa la especificación del lenguaje Java.
Para la versión Eclipse Mars.1 (4.5.1), puede apuntar de 1.3 a 1.8 inclusive.
Cuando configura un proyecto:
[project-name] > Properties > Java Compiler > Compiler compliance level
Esto configura el compilador de Eclipse Java para compilar el código a la versión de Java especificada, generalmente 1.8 en la actualidad.
Las variables de entorno de host, por ejemplo, JAVA_HOME, etc., no se utilizan.
El compilador Oracle / Sun JDK no se usa.
En primer lugar, ¿está configurando su JRE deseado o su JDK deseado?
Incluso si su Eclipse está configurado correctamente, es posible que exista una extraña configuración específica del proyecto en alguna parte. Puede abrir un menú contextual en un proyecto Java determinado en el Explorador de proyectos y seleccionar Propiedades> Compilador Java para verificarlo.
Si nada de eso ayuda, déjeme un comentario y echaré otro vistazo.
Otro enfoque para configurar el compilador JDK 1.8 con Maven es usar este complemento:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable>C:/Program Files/Java/jdk1.8.0_102/bin/javac</executable>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
Solo para aclarar, ¿tiene JAVA_HOME establecido como una variable de sistema o configurado en variables Eclipse classpath? Estoy bastante seguro (¡pero no del todo seguro!) De que la variable del sistema es utilizada por el compilador de línea de comando (y Ant), pero que Eclipse modifica este accroding al JDK utilizado