Solución:
Abre tu pom.xml
archivo y agregue las siguientes líneas en él:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Dónde 1.8
es la versión java de su JDK / JRE actual. Otra forma de hacer esto es agregar un <build>
con el maven-compile-plugin
como
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version> <!-- or whatever current version -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
EDITAR
Si está buscando una manera de hacerlo funcionar con las versiones 9+ de Java, eche un vistazo a @ JDelorean’s respuesta aquí abajo y no olvides darle un voto positivo también 🙂
Tuve el mismo problema cuando instalé Java 9. Mi proyecto usaría por defecto el entorno de ejecución J2SE-1.5. Curiosamente, no se hace referencia al nivel de cumplimiento de Java 9 como las versiones anteriores, es decir, “1.8”, sino como “9”. Así que tuve que proporcionar mis propiedades y la configuración del complemento del compilador Maven en consecuencia:
<properties>
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
</properties>
y
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
Esto parece haber resuelto el problema. Funciona para las versiones 9 y superiores.
La causa principal de este problema es que si por alguna razon Eclipse no puede resolver un válido valor para el maven.compiler.source
propiedad al generar / actualizar el archivo .classpath desde el pom, simplemente usará por defecto org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5
.
Como respondió de manera experta @ jorge-campos, hay varias formas de establecer esa propiedad.
Sin embargo, la respuesta de Jorge no aparecer a trabajar para mi. Aquí estaban mis configuraciones:
<properties>
<javaVersion>1.8</javaVersion>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
…
Exactamente. ${java.version}
es Nunca se va a resolver a la propiedad (completamente diferente) javaVersion
y Eclipse ignoró la propiedad y usó la predeterminada.
Lo que me devuelve al “por alguna razon“La parte con la que comencé; la estupidez del desarrollador puede ser una de esas razones.