web-dev-qa-db-fra.com

Pourquoi Eclipse ne bascule-t-il pas le compilateur sur Java 8?

J'ai extrait un projet Java de SVN dans Eclipse et me suis rendu compte qu'il avait besoin de Java 8 car il utilisait lambdas, etc. J'ai installé l'addon Eclipse pour Java 8, puis redémarré Eclipse. 

New Java Project

J'ai remarqué que près du bas, il indique que la conformité du compilateur par défaut est de 1,7; je suis donc entré dans org.Eclipse.jdt.core.prefs et ai défini la variable de conformité du compilateur sur 1.8, conformément à cette réponse . Cependant, dans Projet -> Préférences -> Compilateur Java, il apparaît toujours comme suit:

Eclipse please

J'ai défini le JRE dans Projet -> Chemin de construction Java: 

jre8

Pourtant, le compilateur refuse de compiler les expressions lambda. Je reçois une erreur qui ressemble à ce que je pourrais obtenir si je la saisissais et la saisissais dans Java 7.

Ceci est la version d'Eclipse que j'utilise

Version: Kepler Service Release 1
Build id: 20130919-0819

Le seul moyen de résoudre ce problème est-il d'installer une nouvelle version d'Eclipse ou manque-t-il quelque chose dans la configuration?

27
itdoesntwork

Deux choses: 

Premièrement, JRE n’est pas identique au JDK. Si vous avez le JDK, vous devez configurer Eclipse pour qu'il pointe vers cela dans vos paramètres. 

Deuxièmement, dans votre capture d'écran ci-dessus, votre niveau de conformité du compilateur est défini sur 1.7. Cela traitera tout votre code comme s'il utilisait Java 1.7. Changez-le en 1.8 pour corriger votre erreur.

Eclipse Luna est nécessaire pour pouvoir prendre en charge Java 8, mais vous pouvez l’ajouter à Kepler SR2 si vous le souhaitez. J'essaierais avec Luna et les suggestions ci-dessus avant d'aller plus loin. Voir cette référence .

Une fois que vous avez obtenu Luna, votre variable Java_HOME devrait suffire à permettre à Eclipse de reconnaître JDK 8 . Si vous souhaitez spécifier un JDK supplémentaire, vous pouvez ajouter une nouvelle bibliothèque système Java en allant à:

Project -> Properties -> Java Build Path -> Libraries -> Add Library -> Java System Library

et accéder à un emplacement valide pour le JDK 8.

Vous pouvez télécharger le JDK 8 de votre plate-forme ici

37
Ryan J

Eclipse kepler SR1 ne prend pas en charge les nouvelles améliorations du langage Java ™ 8 telles que l'expression lambda.

À partir d'informations ici: http://www.Eclipse.org/downloads/Java8/
Je pense que vous devriez utiliser kepler SR2 avec le plugin de support ou changer pour Eclipse Luna.


Mise à jour du lien le 16/09/2016: https://wiki.Eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

5
teddy

J'ai eu le même problème même si j'avais:

  • un JDK 1.8.0 fraîchement téléchargé

  • Java_HOME est défini

  • Java -version sur les rapports en ligne de commande 1.8

  • Java dans le panneau de configuration est défini sur 1.8

  • téléchargé Eclipse Mars

Eclipse me permet uniquement de choisir un niveau de conformité du compilateur op égal à 1.7 dans les préférences du compilateur, même si le JRE que j'ai installé est 1.8.0. Je ne pouvais pas non plus voir un 1.8 dans les environnements d'exécution sous les JRE installés, uniquement un JavaSE-1.7 (sur lequel je ne suis même pas installé!). Lorsque j'ai cliqué dessus, il affiche "jdk1.8.0" en tant que JRE compatible. Je l'ai donc sélectionné, mais je n'ai toujours pas changé.

Ensuite, j'ai décompressé Eclipse Mars dans un nouveau répertoire, créé un nouveau projet, et maintenant je peux sélectionner 1,8, hourra! Cela a grandement réduit les erreurs "Des méthodes en double nommées spliterator ..." que je rencontrais lors de la compilation de mon code sous Java 1.8. Cependant, il en reste toujours un:

Les méthodes par défaut en double nommées spliterator avec les paramètres () et () sont héritées des types List et Set.

Cependant, c'est probablement parce que j'étends AbstractList et que j'implémente Set, donc je l'ai corrigé pour l'instant en supprimant les implémentations Set car cela n'ajoute rien à mon cas (sauf que cela signifie que ma collection ne contient que des éléments uniques)

3
Thomas R

J'ai eu le même problème avec Eclipse kepler.J'ai suivi ces étapes pour le résoudre

  • Consultez l’Aide dans Eclipse et l’option Oper Eclipse Market Place.
  • Recherche de jdk 1.8 pour kepler
  • Installez le plugin requis.
  • Redémarrez l'Eclipse.

pour référence, consultez ce lien http://techno-terminal.blogspot.in/2016/05/jdk-18-compiler-compliance-is-not.html

1
satish

Tout d’abord, vous devriez obtenir JdK 8.

si vous avez installé Jdk. 

vous devez définir son chemin à l'aide de l'invite cmd ou de variables système.

parfois, il peut arriver que le chemin ne soit pas défini, ce qui empêche Eclipse d'obtenir les propriétés de jdk. 

L'installation de la dernière version d'ecipse luna peut résoudre votre problème.

j'ai Indigo et Luna. je peux définir 1,8 dans Luna mais 1,7 dans Indigo. Eclipse Luna

Vous pouvez consulter le site Eclipse. il est dit que l'Eclipse Luna devait certainement associer les propriétés de jdk 8. 

1
Deepanshu J bedi

Vous devez installer JDT/Eclipse Java 8 Support for Kepler . https://wiki.Eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

1
tranan

Ancienne question, mais poster la réponse si cela aide quelqu'un . Le chemin de génération était déjà configuré pour utiliser JDK 1.2.81

 lambda expressions are not supported in -source 1.5
[ERROR]   (use -source 8 or higher to enable lambda expressions)

Dans la dernière Eclipse (Photon), l'ajout de l'entrée ci-dessous à pom.xml a fonctionné.

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
  </properties>
1
Tammy
<build>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
0
Rakhee

Commencez par installer le kit JDK1.8 sur PathOpen Eclipse et Oper Eclipse Market Place option . Recherchez jdk 1.8 pour kepler Installez le plug-in requis . Redémarrez Eclipse . Change compiler niveau à 1.8 à partir des préférences . S'il y a toujours une erreur, cliquez sur le fichier et changez explicitement le paramétrage du compilateur en Jdk 1.8.

0
Bikash Singh

En supposant que vous avez déjà téléchargé Jdk 1.8. Vous devez vous assurer que votre version d'Eclipse prend en charge Jdk 1.8. Cliquez sur l'onglet "Aide" puis sélectionnez "Vérifier les mises à jour". Réessayer.

0
HaroldSer

C’est un vieux sujet, mais je voulais juste souligner que j’ai assez cherché pour trouver que la version d’Indigo ne peut pas être mise à jour en SE 1.8, le lien indiqué sur le site Web Eclipse pour mettre à jour l’environnement d’exécution, erreur de rejet pour Indigo.

Image // wiki.Eclipse.org/File:ExecutionEnvironmentDescriptionInstallation.png c'est le lien vers lequel les informations sur l'environnement d'exécution sont données.

https://wiki.Eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler Ceci montre étape par étape la mise à jour de l'environnement d'exécution.

J'ai essayé de mettre à jour l'environnement d'exécution et j'ai la même erreur.

0
PRAVEEN SONI