web-dev-qa-db-fra.com

Eclipse 2018-09 ne compilera pas le code source Java 11; pense qu'il est inférieur à 1,7

J'utilise Eclipse 2018-09 (4.9.0) sous Windows 10. J'utilise Open JDK 11 GA. J'ai un projet Maven qui a été spécifié comme utilisant le code source Java 8.

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Cela compile bien en utilisant Maven 3.5.3 sur la ligne de commande. Cela compile également très bien en utilisant Eclipse Eclipse 2018-09 (4.9.0).

J'ai changé les versions de compilation Java en Java 11:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

Cela fonctionne toujours bien sur la ligne de commande en utilisant Maven 3.5.3. Mais dans Eclipse 2018-09, je reçois des erreurs partout:

  • '<>' operator is not allowed for source level below 1.7
  • Constructor references are allowed only at source level 1.8 or above
  • Default methods are allowed only at source level 1.8 or above

Vous avez eu l'idée.

J'ai déjà utilisé Alt+F5 pour mettre à jour mon projet Maven (et mes sous-projets) dans Eclipse. J'ai fait un nettoyage complet et reconstruit.

Parce que cela compile bien avec Maven sur la ligne de commande, il doit s'agir d'un problème Eclipse, n'est-ce pas? Bien sûr, Eclipse ne prend pas encore en charge toutes les nouvelles fonctionnalités de Java 11, mais ce code n’a pas de fonctionnalités spécifiques à Java 11 . Qu'est-ce qui ne va pas?

14
Garret Wilson

Pour une raison quelconque, vous devez installer un plugin Eclipse supplémentaire " Prise en charge de Eclipse 2018-09 (4.9) par Java 11 " (même dans Eclipse Photon 4.9)

Fonctionne pour Eclipse - STS 4.0.1 (basé sur Eclipse 4.9), Maven 3.6.0, avec cette configuration du plug-in du compilateur Maven

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>                
        </plugin>
4
Ralph

On dirait que Eclipse ne récupère pas les versions du pom. 

Je viens de tester votre configuration de pom et de vérifier son fonctionnement, soit en fournissant les propriétés source et cible du compilateur comme dans la question ou la nouvelle propriété de publication comme décrit dans cette réponse , à l'aide du dernier Support de Java 11 pour Eclipse 2018 -09 plugin. 

Il est important que le JDK 11 soit correctement configuré dans les préférences Eclipse. Ajoutez le JDK 11 à la page de préférences "Installé JRE", puis faites-le correspondre à JavaSE-11 dans la page de préférences "Environnement d'exécution". Sinon, la mise à jour du projet Maven entraînera l’utilisation du JDK par défaut, ce qui est probablement le problème que vous rencontrez.

3
kapex

Ce problème est résolu dans Eclipse 2018-12. La mise à niveau vers cette version résoudra votre problème. 

0
Dan Greening