web-dev-qa-db-fra.com

Programmation Java 7 dans Eclipse

J'ai installé JDK 7 et Eclipse 3.6M6 . Ensuite, j'ai ajouté JRE 7 en tant que nouvel environnement d'exécution JRE dans Eclipse et défini le niveau de conformité du compilateur sur Java 7. Je peux compiler le morceau de code suivant via la ligne de commande en utilisant le javac fourni avec JDK 7.

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 line 7 Java Problem

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

Même si j'ai défini le niveau de conformité du compilateur sur Java 7, il semble qu'Eclipse ne comprenne 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, voici 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
50
reprogrammer

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

MISE À JOUR 1: Le BETA_Java7 la branche a été fusionnée en HEAD et R3_7_maintenance (Voir archive Eclipse-dev ).

MISE À JOUR 2: Eclipse 3.7.1 (Indigo SR1) prend en charge Java 7 .

18
reprogrammer

Comme l'a souligné Alex, Eclipse utilise son propre compilateur qui ne prend actuellement pas en charge Java 7 et, comme indiqué dans le Plan de projet pour le projet Eclipse, version Helios , support pour Java 7 est différé et découplé de la version 3.6:

  • ((new) différé) Ajout de la prise en charge des fonctionnalités de Java SE 7 . La prochaine version de Java SE est la version 7, qui sera probablement disponible dans la seconde moitié de 2010. Bien que le contenu de cette version soit encore en discussion, cette version devrait contenir des extensions de Java langue, y compris les annotations sur les types (JSR-308), la prise en charge de la modularité (JSR-294) et d'autres changements de langue mineurs (projet Coin). Les outils Eclipse Java incluront la prise en charge initiale de la compilation, de l'édition et du lancement d'applications pour Java 7 pour les pièces qui ont des spécifications accessibles au public (uniquement JSR-308 à ce stade). [JDT Core, JDT UI] ( 288548 )

    REMARQUE: Afin d'aligner notre calendrier avec l'apparence officielle retardée de Java 7 et en raison du manque de spécifications accessibles au public (y compris le manque d'un Java 7 JSR), nous avons décidé de déplacer le travail de développement vers une branche distincte et de le découpler 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 fournirons des mises à jour distinctes pour les versions officielles afin de fournir un accès anticipé aux fonctionnalités de Java 7.

40
Pascal Thivent

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

Netbeans devrait fonctionner.

6
Axel Gneiting

Je vérifie la branche dite JSR 308 de org.Eclipse.jdt.core en utilisant les informations de référentiel CVS suivantes.

Connection type: pserver
User: anonymous
Host: dev.Eclipse.org
Port: Default
Repository path: /cvsroot/Eclipse
Module: org.Eclipse.jdt.core
Tag: JSR_308 (Branch)

Ensuite, j'ai suivi les instructions pour installer le JDT extrait dans Eclipse. Par la suite, j'ai levé les yeux 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'annotations 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.

3
reprogrammer

La prise en charge de Java 7 (BETA) est désormais disponible dans JDT. Voir http://thecoderlounge.blogspot.com/2011/06/Java-7-support-in-Eclipse-jdt-beta.html

2
Deepak Azad