web-dev-qa-db-fra.com

Erreur de compilation Maven: (utilisez -source 7 ou supérieur pour activer l'opérateur Diamond)

J'utilise maven dans IntelliJ, JDK1.8, maven 3.2.5. Vous avez une erreur de compilation: utilisez -source 7 ou supérieur pour activer Diamond Opera. Les détails sont les suivants:

  [ERROR] COMPILATION ERROR : 
  [INFO] -------------------------------------------------------------
  [ERROR] TrainingConstructor.Java:[31,55] diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond operator)
  [ERROR] DTM.Java:[79,21] try-with-resources is not supported in -source 1.5  (use -source 7 or higher to enable try-with-resources)
  [ERROR] ticons.Java:[53,44] diamond operator is not supported in -source 1.5  (use -source 7 or higher to enable diamond operator)

Aucune suggestion? Existe-t-il une autre configuration pour définir ce niveau de source? semble ne pas utiliser Java 1.8.

44
HappyCoding

Vérifiez comment votre maven-compiler-plugin est configuré, il devrait utiliser Java version 7 ou supérieure:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Pour une réponse plus complète, voir celui ci-dessous .

70
Sergey Pauk

SOLUTION 1 - Définissez ces propriétés dans le fichier pom.xml

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

SOLUTION 2 - Configurer le plug-in du compilateur Maven (toujours dans le fichier pom.xml)

<build>

<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
</plugins>
...

POURQUOI CELA ARRIVE

Le problème se pose parce que

[...] actuellement, le paramètre source par défaut est 1,5 et le paramètre cible par défaut est 1,5, indépendamment du JDK avec lequel vous exécutez Maven. Si vous Si vous souhaitez modifier ces valeurs par défaut, vous devez définir les sources et les cibles comme décrit dans la section Définition des options -source et -target du compilateur Java.

Introduction du plugin Maven Compiler (jusqu'à la version 3.3)

et avec les versions récentes de Maven:

Notez également qu'actuellement, le paramètre source par défaut est 1.6 et le paramètre cible par défaut est 1.6, indépendamment du JDK avec lequel vous exécutez Maven. Vous êtes vivement encouragé à modifier ces valeurs par défaut en définissant source et cible , comme indiqué dans la section Définition de la -source et de la cible de Java Compilateur.

Introduction du plugin Maven Compiler

C'est pourquoi le changement de JDK n'a aucun effet sur le niveau de la source. Vous avez donc deux façons de dire à Maven quel niveau de source utiliser.

JDK VERSION À UTILISER?

Si vous définissez une cible 1.7 comme dans cet exemple, assurez-vous que la commande mvn est effectivement lancée avec un jdk7 (ou supérieur).

NIVEAU DE LANGUE SUR L'IDE

Les IDE utilisent généralement le fichier maven pom.xml comme source de configuration du projet. La modification des paramètres du compilateur dans IDE n'a pas toujours d'effet sur la construction de maven. C'est pourquoi, le meilleur moyen de garder un projet toujours gérable avec maven (et interopérable avec d'autres IDE) est de modifier le pom .xml et indiquez à IDE de se synchroniser avec maven.

54
Fabio Bonfante

Vous devez changer votre configuration:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

Vous devriez apprendre la différence entre source/taget option dans JavaC et utilisation de JDK 1.8/1.7, etc.

En dehors de cela, vous devez mettre à jour le plug-in use maven-compiler-plugin.

5
khmarbaise

Si vous avez déjà essayé les solutions @Sergey Pauk et @khmarbaise, consultez également les paramètres -> Construire, Exécution, Déploiement -> Compilateur -> Java Compilateur, il existe des versions de code source cible pour modules particuliers

2
pezetem