IntelliJ IDEA 13 usa Java 1.5 a pesar de estar configurado en 1.7

147

A pesar de especificar JDK 1.7 en todas las configuraciones del proyecto (incluido en File -> Project Structure -> Project :: Project SDK), el siguiente error se produce IntelliJ 13al intentar compilar un código Java 7 simple que utiliza el operador de diamante:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

¿Hay algún otro lugar en la configuración donde la -source 7opción esperada debería estar habilitada?

PNS
fuente
8
Intenté: File -> Project Structure -> Project :: Project language levelcambiar a Diamonds, ARM, multi-catch etc?
Adam Shakhabov
39
Si. Como resultado, hay otra opción en Archivo -> Estructura del proyecto -> Módulos :: Fuentes (junto a Rutas y dependencias) y que tiene una opción de "Nivel de idioma" que también debe configurarse correctamente. ¡Gracias a todos por los comentarios y las respuestas! :-)
PNS
33
Hay 3 lugares que deben actualizarse. (1) Archivo -> Configuración (Ctrl + alt + s para el acceso directo), luego "Build, Execution, Deployment"> Compiler> Java Compiler y cambie la "Versión de código de bytes de destino" a la versión de Java deseada. (2 y 3) El otro lugar está en Archivo> Estructura del proyecto (Ctrl + Alt + Shift + S)> "Configuración del proyecto"> "Proyecto", cambie el SDK del proyecto para que apunte a la versión adecuada de Java y establezca el nivel de idioma del proyecto en La versión correcta. El código de asistencia solo cambia el nivel de idioma para usted, desafortunadamente haciendo de esto una molestia para nuevos proyectos.
8bitme
2
¿Qué sucede si tengo 200 módulos en mi proyecto? ¿Tengo que pasar todo el día reclicándolos?

Respuestas:

114

Si nada de esto ayuda (mi caso), puede configurarlo en su pom.xml, de esta manera:

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

Como este tipo genial mencionado aquí: https://stackoverflow.com/a/25888116/1643465

Djordje Ivanovic
fuente
44
buena idea, pero no cometa sus anulaciones duras a un proyecto compartido a menos que quiera
destruir la
8
Esto resolvió el problema para mí, ¡gracias! ¿Cómo puede "volar la configuración de los compañeros de equipo"? Si el objetivo del proyecto es 1.7, entonces es 1.7. No es que cada compañero de equipo tenga un entorno objetivo diferente.
isapir
1
Genial, el mío es proyecto maven.
huuthang
1
Para nuevos proyectos maven, esta configuración se puede agregar en proyectos maven predeterminados. Usar preferencias | Editor | Plantillas de archivos y códigos | Maven Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJ Support Forum
pRmdk
Esto funcionó para mí. Pero solo cuando reinicié IntelliJ, intenté simplemente reconstruir el proyecto solo y eso no funcionó.
Metin Dagcilar
155

Compruebe los niveles de idioma de su proyecto / módulo (Estructura del proyecto | Proyecto; Estructura del proyecto | Módulos | nombre-módulo | Fuentes). También es posible que desee echar un vistazo a Configuración | Compilador | Compilador Java | Versión de bytecode por módulo.

Establezca también esto:

Archivo -> Estructura del proyecto -> Módulos :: Fuentes (junto a Rutas y dependencias) y que tiene una opción de "Nivel de idioma" que también debe configurarse correctamente.

Peter Gromov
fuente
2
Y verifique si Additional command line parametersen la Java Compilerconfiguración está en blanco.
NeplatnyUdaj
2
Nota: La tercera cosa (Archivo -> Estructura del proyecto -> Módulos :: Fuentes) es lo que me resolvió.
Peter
Capturas de pantalla útiles de este proceso en esta respuesta: stackoverflow.com/a/21747329/1146608
Patrick M
1
Si usa Maven, necesita modificar pom: stackoverflow.com/questions/27037657/…
Benj
11
+1 para nivel de idioma. ¡No debería haber MUCHOS lugares para configurar y restablecer y restablecer la misma cosa # $% ^!
G. Ann - SonarSource Team
52

[Para IntelliJ IDEA 2016.2]

Me gustaría ampliar parte de la respuesta de Peter Gromov con una captura de pantalla actualizada. Específicamente esta parte en particular:

También es posible que desee echar un vistazo a Configuración | Compilador | Compilador Java | Versión de bytecode por módulo.

Creo que (al menos en 2016.2): ​​verificar diferentes confirmaciones en gitrestablece estas a 1.5.

Versión de bytecode por módulo

Birchlabs
fuente
55
Dejé de mantener estos en sus números correctos (por alguna razón cambian, supongo que cuando lo hago git checkout). Descubrí que podía eliminar de forma segura las entradas en esta lista; el módulo recurre al uso de "Project bytecode version".
Birchlabs
Estos números también vuelven a 1.5 inesperadamente para mí. Solo la codificación rígida de las versiones de origen y destino del compilador en el archivo pom.xml funciona de manera consistente.
sheldonkreger
Observe la configuración de "Versión de código de bytes del proyecto" cerca de la parte superior de esta captura de pantalla, así como la "Versión de código de bytes de destino" resaltada.
Basil Bourque
@ Birchlabs Gracias, creo que esta es la respuesta correcta.
chrips
1
Esta fue la única solución que me solucionó el problema, IntelliJ IDEA 2019.1
João Rocha da Silva
19

Alternativamente, puede aplicar maven-compiler-plugin con la versión adecuada de Java agregando esto a su pom.xml:

<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>
OlgaMaciaszek
fuente
Esto funcionó después de salir del proyecto eliminando la carpeta .idea y el archivo .iml, todos los cuales se recrean al abrir el proyecto nuevamente.
Andrew
1
Al presionar el botón "actualizar Maven" en la idea debería funcionar.
OlgaMaciaszek
Se requería una actualización de @OlgaMaciaszek para que la solución funcionara. ¡Gracias!
payne
14

Intenté hacer cambios a Intellij IDEA de la siguiente manera:

1)

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2)

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

pero nada funcionó, revertió las versiones a java 1.5 tan pronto como lo guardé.

Sin embargo, agregar las siguientes líneas a la raíz (nivel del proyecto) pom.xml me funcionó para resolver el problema anterior: (ambas opciones funcionaron para mí)

Opción 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Opcion 2:

<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>
Amit Kaneria
fuente
11

Archivo-> Estructura del proyecto-> Configuración del proyecto-> Proyecto-> Nivel de idioma del proyecto

Archivo-> Estructura del proyecto-> Configuración del proyecto-> Módulos-> Nivel de idioma

Cambiar nivel usando el menú desplegable

ketankk
fuente
4

En su línea de comando (terminal Unix) Vaya a la carpeta raíz de su proyecto y haga esto

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

Esto cambiará la propiedad de nivel de idioma en todos los archivos .iml de su proyecto de java 1.5 a java 1.8.

Saideep Sambaraju
fuente
Todavía no estoy seguro, pero es posible que también deba reemplazar la versión JDK en compiler.xmlla raíz del proyecto (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets
compiler.xml puede ser específico para su proyecto. Este comando apunta solo a archivos * .iml que solo son necesarios para intellij. Puede que tenga que ajustar la configuración de idioma en su maven pom.xml o en su caso compiler.xml independiente del IDE.
Saideep Sambaraju
1
@SaideepSambaraju compiler.xml está presente en cualquier proyecto de idea edificable que vi. Por lo que veo, este archivo es el modelo de Preferencias-> compilador (linux) Preferencias-> Compilador (MacOS). Puede usarlo para cambiar la versión de destino por script como dijo Oleksandr o a mano sin interfaz de usuario.
Sergey Sargsyan
@SergeySargsyan: acabo de comprobarlo, está en la carpeta .idea que no pude encontrar al buscar. Gracias por mencionarlo.
Saideep Sambaraju
2

Primero, debe cambiar la "versión del código de bytes del proyecto" en File > Settings,Compiler > Java Compiler

Segundo, haz una reconstrucción completa.

Elliott Frisch
fuente
2

Tengo el mismo problema pero con una situación diferente. Puedo compilar sin ningún problema con maven en la línea de comandos ( mvn clean install), pero en Intellij siempre recibí un "java: diamond operator is not supported in -source 1.5"error de compilación a pesar de haber configurado el complemento maven-compiler con java 1.8 en pom.xml.

Resultó que tengo una configuración de repositorio remoto en settings.xml de mi maven de la que depende el proyecto, pero Intellij usa su propio maven que no tiene la misma configuración que mi maven local.

Entonces, mi solución fue cambiar la configuración de Maven de Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) para usar el maven local.

jordom
fuente
2

En IntelliJ Community Edition 2019.02, cambiar la siguiente configuración funcionó para mí

  1. Actualice el archivo-> Estructura del proyecto-> Configuración del proyecto-> Proyecto-> Nivel de lenguaje del proyecto a Java 11 (actualice a la versión de Java que desea utilizar en su proyecto) usando el menú desplegable.

  2. Archivo de actualización-> Estructura del proyecto-> Configuración del proyecto-> Módulos-> Nivel de idioma

  3. Actualice Archivo-> Configuración-> Compilación, Ejecución, Implementación -> Compilador -> Compilador Java-> Versión de Project ByteCode a java 11.

  4. Actualice la versión de Destino para todas las entradas en Archivo-> Configuración-> Compilación, Ejecución, Implementación -> Compilador -> Compilador Java-> Versión de Código de Byte por módulo.

Khyati Elhance
fuente
0

Tenía la siguiente propiedad trabajando para mí en IntelliJ 2017

  <properties>
        <java.version>1.8</java.version>       
  </properties>
H.Rabiee
fuente
Esto solo funciona si usa un proyecto padre como el de Spring Boot.
wggn
0

Una cosa más que podría causar esto está teniendo incorrecta versiondel <parent>proyecto.

En mi caso, apuntaba a un proyecto no existente y, por alguna razón, IntelliJ rebajó la versión en la configuración a 1.5 y más tarde, cuando lo arreglé, todavía estaba interpretando la versión del código de destino como 5 (a pesar de establecerla en 11).

sintagma
fuente