2010-04-14 6 views
50

J'ai installé JDK 7 et Eclipse 3.6M6. Ensuite, j'ai ajouté JRE 7 comme un nouvel environnement d'exécution JRE dans Eclipse, et définir le niveau de conformité du compilateur Java 7. Je peux compiler le morceau de code suivant par la ligne de commande en utilisant la javac qui vient avec JDK 7.Programmation de Java 7 dans Eclipse

import java.util.HashMap; 
import java.util.Map; 

public class Try { 

    public static void main(String[] args) { 
     Map<Integer, String> map = new HashMap<>(); 
    } 
} 

Mais, Eclipse donne les messages d'erreur suivants.

Nombre d'arguments incorrect pour le type HashMap; il ne peut pas être paramétré avec des arguments Try.java/TryJava7/src ligne 7 Java Problème

Erreur de syntaxe sur le jeton "<",? attendu après ce jeton ligne Try.java/TryJava7/src 7 Java Problème

Même si je me suis fixé le niveau de conformité du compilateur de Java 7, il semble que Eclipse ne comprend pas encore la syntaxe java7. Est-il possible de jouer avec Java 7 dans Eclipse?

Ce qui suit est le contenu de .classpath.

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 

Et, ce qui suit est le contenu de .settings/org.eclipse.jdt.core.prefs.

eclipse.preferences.version=1 
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 
org.eclipse.jdt.core.compiler.compliance=1.7 
org.eclipse.jdt.core.compiler.debug.lineNumber=generate 
org.eclipse.jdt.core.compiler.debug.localVariable=generate 
org.eclipse.jdt.core.compiler.debug.sourceFile=generate 
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 
org.eclipse.jdt.core.compiler.source=1.7 
+1

A-t-il des fermetures? :-( – OscarRyz

+0

@Oscar Reyes, je ne pense pas que la spécification Java 7 pour les fermetures a été publiée officiellement .. – reprogrammer

+5

@Oscar Fermetures sont prévues pour jdk8 –

Répondre

18

Voir http://wiki.eclipse.org/JDT_Core/Java7, http://wiki.eclipse.org/PDE/API_Tools/Java7 et Bug 288548 pour le soutien continu d'Eclipse pour Java 7. Et voir http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29 pour obtenir des instructions sur la façon d'évaluer Java 7 dans Eclipse.

MISE À JOUR 1: La branche BETA_JAVA7 a été fusionnée à HEAD et R3_7_maintenance (Voir la eclipse-dev archive).

MISE À JOUR 2:Eclipse 3.7.1 (Indigo SR1) supports Java 7.

+0

De jolis liens! Ce sont vraiment utiles. –

6

Eclipse possède son propre compilateur Java intégré. Donc, s'il n'y a pas de bêta d'éclipse ou quelque chose comme ça qui peut déjà compiler Java 7 alors vous n'avez pas de chance.

Netbeans devrait fonctionner.

40

Comme Alex a fait remarquer, Eclipse utilise son propre compilateur qui ne prend pas en charge Java 7 et, comme il est indiqué dans le Project Plan For Eclipse Project, version Helios, le support de Java 7 est reporté et découplé du 3.6 sortie:

  • ((new) différé) Ajout de la prise en charge des fonctionnalités Java SE 7. La prochaine fonctionnalité version de Java S'est la version 7, qui sera probablement disponible dans la seconde moitié de 2010. Alors que les contenu de cette version sont encore en discussion, que la libération est devrait contenir des extensions au Langage Java, y compris les annotations sur les types (JSR-308), la prise en charge de la modularité (JSR-294) et d'autres modifications du langage mineur (projet Coin). Eclipse outillage Java inclura le soutien initial pour la compilation, le montage et le lancement applications Java 7 pour les parties qui ont publiquement disponibles (spécifications JSR-308 seulement à ce point ).[JDT Core UI JDT] (288548)

    REMARQUE: Afin d'aligner notre calendrier avec le fonctionnaire apparence Java 7 retardée et en raison du manque de spécifications disponibles publiquement (y compris le manque d'un Java 7 JSR), nous avons décidé de déplacer le travail de développement à une branche distincte et découpler à partir de la version 3.6. Dans cette branche , nous continuerons à développer les fonctionnalités Java 7 à mesure qu'elles deviennent accessibles au public. Nous allons livrer mises à jour distinctes pour les versions officielles afin de fournir un accès précoce aux fonctionnalités Java 7 .

+1

+1 pour cette image :) (et le reste de l'information bien sûr) – BalusC

+0

Merci d'avoir cité les plans d'Eclipse pour la prise en charge de Java 7. Ils mentionnent qu'ils prendront en charge Java 7 dans une branche différente. Savez-vous où cette branche du développement est? – reprogrammer

+0

@BalusC Je l'ai aimé aussi;) –

3

J'extrayez de la soi-disant JSR 308 branche de org.eclipse.jdt.core en utilisant les informations du référentiel CVS suivant. Puis, j'ai suivi les instructions pour installer le JDT extrait dans Eclipse. Par la suite, j'ai recherché org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java et /org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java pour trouver de petits exemples d'exercices d'annotation de type JSR 308.

À ce stade, la branche prend en charge et génère les nouveaux attributs correspondants dans les fichiers .class lorsque des annotations sur les types sont présentes. Mais, les processeurs d'annotation ne semblent pas fonctionner.