IDEA: javac: la versión de origen 1.7 requiere la versión de destino 1.7

474

Cuando ejecuto una prueba JUnit, usando IntelliJ IDEA, obtengo

ingrese la descripción de la imagen aquí

¿Cómo puedo corregir esto?

  • Usando SDK 1.7
  • El nivel de idioma del módulo es 1.7

La construcción de Maven funciona bien. (Es por eso que creo esto en el problema de configuración de IDEA)

James Raitsev
fuente

Respuestas:

689

Lo más probable es que tenga opciones compiladoras incorrectas importadas de Maven aquí:

opciones del compilador

Verifique también el bytecode del proyecto y del módulo ( target configuración de la versión del ) descrita en la captura de pantalla.

Otros lugares donde se configura el nivel de idioma de origen :

  • Estructura del proyecto | Proyecto

proyecto

  • Estructura del proyecto | Módulos (verifique cada módulo) | Fuentes

fuentes

El nivel de idioma predeterminado de Maven es 1.5 (5.0), verá esta versión como el nivel de idioma del Módulo en la captura de pantalla anterior.

Esto se puede cambiar usando la configuración del plugin maven-compiler dentro pom.xml:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

o

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA respetará esta configuración después de que vuelva a importar el proyecto Maven en la ventana de la herramienta Proyectos Maven :

reimportar

CrazyCoder
fuente
2
Correcto. ¿Es esta configuración común a todos los módulos en un proyecto, o es específica para un módulo dado?
James Raitsev
1
Esta configuración es por proyecto, afecta a todos los módulos.
CrazyCoder
8
¿Hay alguna razón por la cual después de arreglar esto y aplicar que volvería a un valor incorrecto (ya sea a través de cambios de Maven o algo así)?
Patrick
55
@Patrick, la pom.xmlconfiguración del complemento del compilador de Java puede especificar la versión de Java que anulará esta configuración la próxima vez que realice cambios en pom.xml (si la reimportación automática está habilitada) o reimporta el proyecto manualmente.
CrazyCoder
1
@CrazyCoder Cambié mi pom.xml después de cambiar esto una vez mucho antes (estaba esperando otros cambios entrantes en el pom), por lo que parece una explicación bastante razonable. Gracias
Patrick
358

IntelliJ 15, 2016 y 2017

Similar a lo que se discute a continuación para IntelliJ 13 y 14, pero con un nivel adicional en el panel Configuración / Preferencias: Configuración > Compilación, Ejecución, Implementación > Compilador > Compilador Java .

ingrese la descripción de la imagen aquí

IntelliJ 13 y 14

En IntelliJ 13 y 14, verifique Configuración> Compilador> UI del compilador de Java para asegurarse de que no está apuntando a una versión de código de bytes diferente en su módulo.

ingrese la descripción de la imagen aquí

Drew Noakes
fuente
3
Tuve que eliminar mis módulos y dejar que se resolviera automáticamente (dejar en blanco para jdk predeterminado)
Akin Okegbile
3
Funciona para la última Idea14.1
Tushar
Entonces, ¿cuál es la solución aquí?
AlikElzin-kilaka
@ AlikElzin-kilaka, establece el nivel objetivo a lo que necesites.
Drew Noakes el
¿Alguien puede explicar por qué pondrían configuraciones específicas del módulo en la pantalla de configuración de preferencias globales, no en la configuración del módulo?
MK.
61

En IntelliJ IDEA 14.1 la "Versión de código de bytes de destino" está en un lugar diferente.

El siguiente cambio funcionó para mí:

Archivo> Configuración ...> Compilación, ejecución, implementación> Compilador> Compilador Java : cambie la versión de código de bytes de destino de 1.5 a 1.8

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

RUMANIA_ingeniero
fuente
o es mejor dejarlo en blanco, cuando se puede determinar desde jdk!
Dragonborn
¿Por qué hay una configuración diferente a la de Maven?
AlikElzin-kilaka
42

¿Has mirado tu configuración de compilación? Debería ser así si usas Maven 3 y JDK 7

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
swissonid
fuente
22

Me encontré con esto y la solución fue ir a Configuración del proyecto> Módulos> hacer clic en el módulo particular> pestaña Dependencias. Noté que el Módulo SDK todavía estaba configurado en 1.6, lo cambié a 1.7 y funcionó.

Rob Barreca
fuente
Intenté esto ... Terminé teniendo que eliminar los módulos individuales y dejarlos para que se resolvieran automáticamente.
Akin Okegbile
14

En mi caso, he encontrado las opciones requeridas ('versión de código de bytes de destino') en configuración> compilador> compilador de Java (intelij idea 12.1.3)

eger
fuente
10

Modifique el archivo de configuración del compilador del proyecto en la siguiente ruta y cambie el 'objetivo' a 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>
Joe Cheng
fuente
Gracias esto funcionó para mí! No olvides hacer "Make Module '[nombre de tu aplicación]'" haciendo clic derecho en el proyecto
Shehaaz
5

Lo resolví estableciendo el campo en blanco:

Configuración> Compilador> Compilador Java> Versión de código de bytes del proyecto

Than IntelliJ usa la versión predeterminada de JDK.

Robert Moszczynski
fuente
4

De un momento a otro también recibí este error sin una razón clara. Cambié todo tipo de configuraciones en el compilador / módulo, etc. Pero al final solo recreé el proyecto IntelliJ al volver a importar el proyecto Maven y el problema se resolvió. Creo que esto es un error.

IntelliJ 12 129.961

pveentjer
fuente
Lo mismo para IntelliJ 14.1.2. Se volvió a importar el proyecto y se solucionó.
srikanth
4

Llegué a esto después de una pequeña actualización de IntelliJ IDEA 14 a v14.1. Para mí, cambiar una edición de top / parent pom ayudó y luego hice clic en volver a importar Maven (si no es automático).

Pero tal vez sea suficiente para hacer clic derecho en el módulo (s) / agregado / módulo principal y Maven -> Reimportar.

OMax
fuente
esto funcionó para mí! Lo hice para mi módulo de nivel superior y mis módulos secundarios
abelnation
2

Resolví el siguiente método

Archivo >> Estructura del proyecto >> Proyecto >> Nivel de idioma del proyecto -> configurar la versión adecuada (ej: 1.5)

mati
fuente
1

marque .idea / misc.xml a veces necesita cambiar el atributo languageLevel = "JDK_1_X" manualmente

kai
fuente
1

Si es un proyecto Gradle, en su archivo build.gradle, busque las siguientes configuraciones:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Para todos los subproyectos, en su archivo raíz build.gradle, puede poner:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Aunque puede configurar manualmente los niveles de idioma en Idea> Configuración, si se trata de un proyecto Gradle, Idea sincroniza automáticamente los archivos .iml del módulo desde la configuración de Gradle (probado con Idea 15+). Por lo tanto, todos sus cambios manuales se anulan cuando se actualiza Gradle.

Según la documentación de Gradle , si no se configuran, se utiliza la configuración JVM actual.

Cagatay Kalan
fuente
1

Encontré otra forma de encontrarme con este error. Puede obtener esto si ha reorganizado la estructura de su directorio, y uno de sus poms está apuntando al padre principal que ya no configura javac (porque esa configuración se movió a un nivel medio). Si esto sucede, el nivel superior predeterminado es 1.5 y el pom de nivel inferior que se porta mal lo hereda.

Entonces, otra cosa que debe verificar cuando vea este error es que su estructura de pom coincide con la estructura de su directorio correctamente.

Gus
fuente
1

Si la compilación de Maven funciona bien, intente sincronizar la estructura de los proyectos Maven e IntelliJ IDEA.

En la ventana de la herramienta Maven , haga clic en el botón Actualizaractualizar . Al presionar este botón, IntelliJ IDEA analiza la estructura del proyecto en la ventana de la herramienta Maven.

Tenga en cuenta que esto podría no ser útil si está utilizando la compilación EAP, ya que la función de sincronización de Maven puede romperse a veces.

naXa
fuente
0

Asegúrese de seleccionar la dependencia correcta. Archivo> Estructura del proyecto

Seleccione su proyecto y navegue a la pestaña Dependencias. Seleccione la dependencia correcta del menú desplegable o cree una nueva.

Viraj Kulkarni
fuente
0

Si todas las soluciones anteriores no han funcionado para usted (que fue mi caso), puede eliminar los archivos de configuración de intellij:

  • directorio_proyecto / .idea / compiler.xml
  • directorio_proyecto / .idea / encodings.xml
  • directorio_proyecto / .idea / misc.xml
  • directorio_proyecto / .idea / modules.xml
  • directorio_proyecto / .idea / vcs.xml
  • directorio_proyecto / .idea / workspace.xml
  • etc.

Intellij regenerará nuevos más tarde. Sin embargo, TEN CUIDADO, esto también eliminará toda la configuración de intellij realizada en el proyecto (es decir: configuración del modo de depuración, ...)

Youness Marhrani
fuente
0

Debe cambiar la versión del compilador de Java en la configuración de compilación.

ingrese la descripción de la imagen aquí

Nirbhay Rana
fuente