Bien que JDK 1.7 ait été spécifié dans tous les paramètres du projet (y compris dans File -> Project Structure -> Project :: Project SDK
), l'erreur suivante est générée par IntelliJ 13
lors de la compilation d'un code simple Java 7 utilisant l'opérateur diamant. :
Java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)
Existe-t-il un autre endroit dans la configuration où l'option -source 7
attendue devrait être activée?
Si rien de tout cela ne vous 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 a mentionné ici: https://stackoverflow.com/a/25888116/1643465
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 aussi jeter un oeil à Paramètres | Compilateur | Java Compilateur | Version de bytecode par module.
Définissez également ceci:
Fichier -> Structure du projet -> Modules :: Sources (à côté de Chemins et dépendances) et qui possède une option "Niveau de langue" qui doit également être définie correctement.
[Pour IntelliJ IDEA 2016.2]
Je voudrais développer une partie de réponse de Peter Gromov avec une capture d'écran à jour. Plus précisément cette partie particulière:
Vous voudrez peut-être aussi jeter un oeil à Paramètres | Compilateur | Java Compilateur | Version de bytecode par module.
Je crois que (au moins en 2016.2): vérifier différentes commits dans git
les réinitialise à 1,5.
Vous pouvez également appliquer le plug-in maven-compiler-plugin avec la version Java appropriée en l'ajoutant à votre fichier 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>
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é, les versions sont passées à Java 1.5 dès que je l'ai sauvegardée.
Cependant, l'ajout de lignes ci-dessous à la racine (au niveau du projet) pom.xml m'a permis de 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>
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 en utilisant la liste déroulante
Dans votre ligne de commande (terminal Unix) Allez dans le dossier racine de votre projet et faites-le
find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +
Cela modifiera la propriété de niveau de langue dans tous les fichiers .iml de votre projet de Java 1.5 à Java 1.8.
Tout d’abord, vous devez changer la "version du bytecode du projet" sous File > Settings
, Compiler > Java Compiler
Deuxièmement, effectuez une reconstruction complète.
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 eu "Java: diamond operator is not supported in -source 1.5"
erreur de compilation bien que j'ai défini le plugin maven-compiler-plugin avec Java 1,8 dans le pom.xml.
Il s'est avéré que j'ai un paramètre de référentiel distant dans 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 consistait donc à modifier le paramètre Maven de l'Intellij (Settings -> Build, execution, Deployment -> Maven -> Maven home directory
) pour utiliser le Maven local.
J'avais la propriété suivante travaillant pour moi dans IntelliJ 2017
<properties>
<Java.version>1.8</Java.version>
</properties>
Une autre chose qui pourrait causer cela est d'avoir version
incorrect du projet <parent>
incorrect.
Dans mon cas, il faisait référence à un projet inexistant et pour une raison quelconque IntelliJ a rétrogradé la version mise à niveau vers la version 1.5 et plus tard, lorsque je l'ai corrigé, il interprétait toujours la version du code cible comme étant la version 5 (malgré le réglage à 11).