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 javac
die 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:
(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_JAVA7
branch is samengevoegd tot HEAD
en 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.java
opgezocht en
/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java
om 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