IntelliJ IDEA 13 utilise Java 1.5 malgré le réglage sur 1.7

147

Malgré la spécification de JDK 1.7 dans tous les paramètres du projet (y compris dans File -> Project Structure -> Project :: Project SDK), l'erreur suivante est générée IntelliJ 13lorsque vous essayez de compiler du code Java 7 simple qui utilise l'opérateur diamant:

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

Y a-t-il un autre endroit dans la configuration où l' -source 7option attendue doit être activée?

PNS
la source
8
Vous avez essayé: File -> Project Structure -> Project :: Project language levelchanger pour Diamonds, ARM, multi-catch etc?
Adam Shakhabov
39
Oui. En fait, il existe encore une autre option sous Fichier -> Structure du projet -> Modules :: Sources (à côté de Chemins et dépendances) et qui a une option "Niveau de langue" qui doit également être définie correctement. Merci à tous pour les commentaires et les réponses! :-)
PNS
33
Il y a 3 endroits qui doivent être mis à jour. (1) Fichier -> Paramètres (Ctrl + alt + s pour le raccourci) puis "Construire, Exécution, Déploiement"> Compilateur> Compilateur Java et changer la "Version bytecode cible" en la version Java souhaitée. (2 et 3) L'autre endroit est sous Fichier> Structure du projet (Ctrl + Alt + Maj + S)> "Paramètres du projet"> "Projet", modifiez le SDK du projet pour qu'il pointe vers la version appropriée de Java et définissez le niveau de langue du projet sur la bonne version. L'assistance au code ne change que le niveau de langue pour vous, ce qui est malheureusement un inconvénient pour les nouveaux projets.
8bitme
2
Et si j'ai 200 modules dans mon projet, dois-je passer toute la journée à les reclasser?

Réponses:

114

Si rien de tout cela n'aide (mon cas), vous pouvez le définir dans votre pom.xml, comme ceci:

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

Comme ce gars cool l'a mentionné ici: https://stackoverflow.com/a/25888116/1643465

Djordje Ivanovic
la source
4
bonne idée, mais n'engagez pas vos remplacements difficiles dans un projet partagé à moins que vous ne souhaitiez supprimer tous les paramètres de vos coéquipiers
pittoresque
8
Cela a résolu le problème pour moi, merci! Comment peut-il «faire sauter les paramètres des coéquipiers»? Si la cible du projet est 1,7, alors c'est 1,7. Ce n'est pas comme si chaque coéquipier avait un environnement cible différent.
isapir
1
Super, le mien est le projet maven.
huuthang
1
Pour les nouveaux projets maven, ce paramètre peut être ajouté dans les projets maven par défaut. Utiliser les préférences | Rédacteur | Modèles de fichiers et de codes | 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
Cela a fonctionné pour moi. Mais seulement lorsque j'ai redémarré IntelliJ, j'ai essayé de reconstruire le projet seul et cela n'a pas fonctionné.
Metin Dagcilar
155

Veuillez vérifier les niveaux de langue de votre projet / module (Structure du projet | Projet; Structure du projet | Modules | nom-module | Sources). Vous voudrez peut-être également jeter un œil à Paramètres | Compilateur | Compilateur Java | Version de bytecode par module.

Définissez également ceci:

Fichier -> Structure du projet -> Modules :: Sources (à côté de Chemins et dépendances) et qui a une option "Niveau de langue" qui doit également être définie correctement.

Peter Gromov
la source
2
Et vérifiez si Additional command line parametersdans les Java Compilerparamètres est vide.
NeplatnyUdaj
2
Remarque: La troisième chose (Fichier -> Structure du projet -> Modules :: Sources) est ce qui l'a résolu pour moi.
Peter
Captures d'écran utiles de ce processus à cette réponse: stackoverflow.com/a/21747329/1146608
Patrick M
1
Si vous utilisez Maven, vous devez modifier pom: stackoverflow.com/questions/27037657/…
Benj
11
+1 pour le niveau de langue. Il ne devrait pas y avoir BEAUCOUP d'endroits pour régler, réinitialiser et réinitialiser la même chose # $% ^!
G.Ann - SonarSource Team
52

[Pour IntelliJ IDEA 2016.2]

Je voudrais développer une partie de la réponse de Peter Gromov avec une capture d'écran à jour. Plus précisément cette partie particulière:

Vous voudrez peut-être également jeter un œil à Paramètres | Compilateur | Compilateur Java | Version de bytecode par module.

Je crois que (au moins en 2016.2): ​​vérifier différents commits dans les gitréinitialise à 1.5.

Version de bytecode par module

Birchlabs
la source
5
J'ai renoncé à les maintenir à leurs numéros corrects (pour une raison quelconque, ils changent - je suppose que quand je le fais git checkout). J'ai constaté que j'étais en mesure de supprimer en toute sécurité les entrées de cette liste; le module revient à utiliser "Version bytecode du projet".
Birchlabs
Ces chiffres reviennent également à 1,5 pour moi de manière inattendue. Seul le codage en dur des versions source et cible du compilateur dans le fichier pom.xml fonctionne de manière cohérente.
sheldonkreger
Notez le paramètre "Version du bytecode du projet" en haut de cette capture d'écran, ainsi que la "Version du bytecode cible" en surbrillance.
Basil Bourque
@Birchlabs Merci, je pense que c'est la bonne réponse.
chrips le
1
C'était la seule solution qui a résolu le problème pour moi, IntelliJ IDEA 2019.1
João Rocha da Silva
19

Alternativement, vous pouvez appliquer maven-compiler-plugin avec la version Java appropriée en ajoutant ceci à votre 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
la source
Cela a fonctionné après avoir quitté le projet en supprimant le dossier .idea et le fichier .iml qui sont tous recréés lors de la réouverture du projet.
Andrew
1
Appuyer sur le bouton "Actualiser Maven" dans l'idée devrait fonctionner.
OlgaMaciaszek
L'actualisation @OlgaMaciaszek était nécessaire pour que la solution fonctionne. Merci!
payne
14

J'ai essayé d'apporter des modifications à Intellij IDEA comme ci-dessous:

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

mais rien n'a fonctionné, il a rétabli les versions en java 1.5 dès que je l'ai sauvegardé.

Cependant, l'ajout des lignes ci-dessous à la racine (au niveau du projet) pom.xml m'a aidé à résoudre le problème ci-dessus: (les deux options ont fonctionné pour moi)

Option 1:

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

Option 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
la source
11

Fichier-> Structure du projet-> Paramètres du projet-> Projet-> Niveau de langue du projet

Fichier-> Structure du projet-> Paramètres du projet-> Modules-> Niveau de langue

Changer de niveau à l'aide du menu déroulant

ketankk
la source
4

Dans votre ligne de commande (terminal Unix) Allez dans le dossier racine de votre projet, et faites ceci

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

Cela changera la propriété de niveau de langue dans tous les fichiers .iml de votre projet de java 1.5 à java 1.8.

Saideep Sambaraju
la source
Pas encore sûr, mais vous devrez peut-être également remplacer la version JDK compiler.xmlà la racine du projet (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets
compiler.xml peut être spécifique à votre projet. Cette commande cible uniquement les fichiers * .iml qui ne sont nécessaires qu'à intellij. Vous devrez peut-être ajuster les paramètres de langue dans votre maven pom.xml ou dans votre cas compiler.xml indépendamment de l'EDI.
Saideep Sambaraju du
1
@SaideepSambaraju compiler.xml est présent dans n'importe quel projet d'idée constructible que j'ai vu. D'après ce que je vois, ce fichier est le modèle des préférences du compilateur Settings-> (Linux) -> Compiler (MacOS). Vous pouvez l'utiliser pour changer de version cible par script comme l'a dit Oleksandr ou à la main sans interface utilisateur.
Sergey Sargsyan
@SergeySargsyan - Je viens de le vérifier, il se trouve dans le dossier .idea que je n'ai pas trouvé en cherchant. Merci de l'avoir signalé.
Saideep Sambaraju le
2

Tout d'abord, vous devez modifier la "version du bytecode du projet" sous File > Settings,Compiler > Java Compiler

Deuxièmement, effectuez une reconstruction complète.

Elliott Frisch
la source
2

J'ai le même problème mais avec une situation différente. Je peux compiler sans aucun problème avec maven en ligne de commande ( mvn clean install), mais dans Intellij, j'ai toujours une "java: diamond operator is not supported in -source 1.5"erreur de compilation même si j'ai défini le plugin maven-compiler-plugin avec java 1.8 dans le pom.xml.

Il s'est avéré que j'avais un paramètre de référentiel distant dans le fichier settings.xml de mon maven dont dépend le projet, mais Intellij utilise son propre maven qui n'a pas le même paramètre que mon maven local.

Ma solution a donc été de changer le paramètre maven d'Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) pour utiliser le maven local.

Jordom
la source
2

Dans IntelliJ Community Edition 2019.02, la modification des paramètres suivants a fonctionné pour moi

  1. Mettez à jour Fichier-> Structure du projet-> Paramètres du projet-> Projet-> Niveau de langage du projet vers Java 11 (mise à jour vers la version java que vous souhaitez utiliser dans votre projet) en utilisant la liste déroulante.

  2. Mettre à jour le fichier-> Structure du projet-> Paramètres du projet-> Modules-> Niveau de langue

  3. Mettez à jour File-> Settings-> Build, Execution, Deployment -> Compiler -> Java Compiler-> Project ByteCode Version vers java 11.

  4. Mettez à jour la version cible pour toutes les entrées sous File-> Settings-> Build, Execution, Deployment -> Compiler -> Java Compiler-> Par module Byte Code Version.

Khyati Elhance
la source
0

J'ai eu la propriété suivante travaillant pour moi dans IntelliJ 2017

  <properties>
        <java.version>1.8</java.version>       
  </properties>
H.Rabiee
la source
Cela ne fonctionne que si vous utilisez un projet parent comme celui de Spring Boot.
wggn
0

Une chose qui pourrait causer cela a incorrect versiondu<parent> projet.

Dans mon cas, il indiquait un projet inexistant et, pour une raison quelconque, IntelliJ a rétrogradé la version dans les paramètres à 1.5 et les versions ultérieures lorsque je l'ai corrigé, il interprétait toujours la version du code cible comme 5 (malgré le réglage sur 11).

syntagme
la source