Java 7 programmeren in Eclipse

Ik heb JDK 7en Eclipse 3.6M6. Vervolgens heb ik JRE 7 toegevoegd als een nieuwe JRE-uitvoeringsomgeving in Eclipse, en het compiler-complianceniveau ingesteld op Java 7. Ik kan het volgende stuk code compileren via de opdrachtregel met behulp van de javacdie bij JDK wordt geleverd 7.

import java.util.HashMap;
import java.util.Map;
public class Try {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<>();
    }
}

Maar Eclipse geeft de volgende foutmeldingen.

Onjuist aantal argumenten voor type HashMap; het kan niet worden geparametriseerd met argumenten Try.java /TryJava7/src regel 7 Java-probleem

Syntaxisfout op token “<“, ? verwacht na deze token Try.java /TryJava7/src regel 7 Java-probleem

Hoewel ik het nalevingsniveau van de compiler heb ingesteld op Java 7, lijkt het erop dat Eclipse de Java7-syntaxis nog niet begrijpt. Is het mogelijk om met Java 7 te spelen in Eclipse?

Het volgende is de inhoud van .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>

En het volgende is de inhoud van .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

Antwoord 1, autoriteit 100%

Zoals Alex opmerkte, gebruikt Eclipse zijn eigen compiler die momenteel geen Java 7 ondersteunt en, zoals vermeld in de Projectplan Voor Eclipse Project, versie Helios, wordt ondersteuning voor Java 7 uitgesteld en ontkoppeld van release 3.6:

  • ((new)uitgesteld) Ondersteuning toevoegen voor Java SE 7-functies . De volgende functie
    release van Java SE is versie 7, die:
    zal waarschijnlijk beschikbaar zijn in de
    tweede helft van 2010. Terwijl de
    inhoud van deze release is nog steeds
    ter discussie, die release is
    zal naar verwachting extensies bevatten voor de
    Java-taal, inclusief annotaties
    op typen (JSR-308), ondersteuning voor modulariteit
    (JSR-294), en andere minder belangrijke taal
    wijzigingen (Muntproject). Eclipse Java
    tooling omvat initiële ondersteuning
    voor compileren, bewerken en starten
    toepassingen voor Java 7 voor degenen
    onderdelen die openbaar beschikbaar zijn
    specificaties (alleen JSR-308 op dit moment)
    punt). [JDT Core, JDT UI] (288548)

    OPMERKING:om onze
    schema met de vertraagde ambtenaar
    Java 7 uiterlijk en door gebrek aan
    openbaar beschikbare specificaties
    (inclusief het ontbreken van een Java 7 JSR), we
    hebben besloten om de ontwikkeling te verplaatsen
    werk naar een aparte tak en ontkoppel
    het van de 3.6-release. In dat
    branche zullen we doorgaan met het ontwikkelen van de
    Java 7-functies zoals ze worden
    publiek toegankelijk. Wij bezorgen
    aparte updates voor de officiële
    bouwt om vroeg te kunnen bieden
    toegang tot Java 7-functies.


Antwoord 2, autoriteit 45%

Zie http://wiki.eclipse.org/JDT_Core/Java7, http://wiki.eclipse.org/PDE/API_Tools/Java7en Bug 288548voor de voortdurende ondersteuning van Eclipse voor Java 7. En zie http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29voor instructies over het evalueren van Java 7 in Eclipse.

UPDATE 1:De BETA_JAVA7branch is samengevoegd tot HEADen R3_7_maintenance(Zie de eclipse-dev archief).

UPDATE 2:Eclipse 3.7.1 (Indigo SR1) ondersteunt Java 7.


Antwoord 3, autoriteit 15%

Eclipse heeft zijn eigen ingebouwde Java-compiler. Dus als er geen eclipse-bèta of iets dergelijks is die Java 7 al kan compileren, dan heb je pech.

Netbeans zou moeten werken.


Antwoord 4, autoriteit 8%

Ik check de zogenaamde JSR 308-tak van org.eclipse.jdt.core uit met behulp van de volgende CVS-repository-informatie.

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

Vervolgens volgde ik de instructies om de uitgecheckte JDT in eclipse te installeren. Vervolgens heb ik org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.javaopgezocht en
/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.javaom met kleine voorbeelden te komen die JSR 308-type annotaties gebruiken .

Op dit punt ondersteunt en genereert de vertakking de corresponderende nieuwe attributen in de .class-bestanden wanneer annotaties op typen aanwezig zijn. Maar annotatieprocessors lijken niet te werken.


Antwoord 5, autoriteit 5%

Java 7-ondersteuning (BETA) is nu beschikbaar in JDT. Zie http://thecoderlounge.blogspot. com/2011/06/java-7-support-in-eclipse-jdt-beta.html

Other episodes