2010-04-14 2 views
50

Ich installierte JDK 7 und Eclipse 3.6M6. Dann fügte ich JRE 7 als eine neue JRE-Ausführungsumgebung in Eclipse, und stellen Sie die Compiler-Konformitätsstufe auf Java 7. ich das folgende Stück Code durch Befehlszeile kompilieren können die javac verwenden, 7.Java 7 in Eclipse programmieren

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

public class Try { 

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

Aber Eclipse gibt die folgenden Fehlermeldungen.

Falsche Anzahl der Argumente für den Typ HashMap; es kann nicht mit Argumenten parametriert werden Try.java/TryJava7/src Zeile 7 Java Problem

Syntaxfehler auf Token "<",? erwartet nach diesem Token Try.java/TryJava7/src Zeile 7 Java Problem

Auch wenn ich die Konformitätsstufe des Compilers auf Java 7 festgelegt haben, es sieht aus wie Eclipse noch Java7 Syntax nicht versteht. Ist es möglich mit Java 7 in Eclipse zu spielen?

Das Folgende ist der Inhalt von .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> 

Und das Folgende ist der Inhalt von .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

Hat es Verschlüsse? :-( – OscarRyz

+0

@ Oscar Reyes, ich glaube nicht, dass Java 7 Spezifikation für Verschlüsse offiziell veröffentlicht worden ist. – reprogrammer

+5

@Oscar Closures sind für jdk8 –

Antwort

18

Siehe http://wiki.eclipse.org/JDT_Core/Java7, http://wiki.eclipse.org/PDE/API_Tools/Java7 und Bug 288548 für die kontinuierliche Unterstützung von Eclipse für Java 7. Und siehe http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29 Eine Anleitung, wie Java 7 in Eclipse zu bewerten.

UPDATE 1: Der BETA_JAVA7 Zweig hat HEAD und R3_7_maintenance verschmolzen (siehe eclipse-dev archive).

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

+0

Schöne Links! Das sind wirklich hilfreich. –

6

Eclipse hat einen eigenen eingebetteten Java-Compiler. Wenn es also keine Eclipse-Beta oder so etwas gibt, das Java 7 bereits kompilieren kann, dann hast du kein Glück.

Netbeans sollte funktionieren.

40

Als Alex wies darauf hin, nutzt Eclipse-einen eigenen Compiler, der zur Zeit Java nicht unterstützt 7 und, wie in den Project Plan For Eclipse Project, version Helios erwähnt, Unterstützung für Java 7 abgegrenzt und entkoppelt von der Version 3.6:

  • ((new) zurückgestellt) Unterstützung für Java SE 7 Features hinzufügen. Die nächste Funktion Version von Java SE Version 7, die wahrscheinlich in dem zweiten Halbjahr 2010 verfügbar sein wird Während der Inhalt dieser Pressemitteilung noch diskutiert ist, ist, dass die Freisetzung erwarteten Erweiterungen enthalten, um die Java-Sprache, einschließlich Anmerkungen auf Typen (JSR-308), Modularitätsunterstützung (JSR-294) und andere Nebensprache Änderungen (Coin Projekt). Eclipse-Java Werkzeuge gehören anfängliche Unterstützung für die Erstellung, Bearbeitung und Einführung Anwendungen für Java 7 für jene Teile, die Spezifikationen öffentlich zur Verfügung hat (nur JSR-308 an diesem Punkt ).[JDT Core JDT UI] (288548)

    HINWEIS: Um unseren Zeitplan mit den verzögerten offiziellen Java 7 Aussehen auszurichten und wegen des Mangels an öffentlich zugänglichen Spezifikationen (einschließlich Fehlen eines Java 7 JSR), wir haben beschlossen, die Entwicklung Arbeit zu einem separaten Zweig zu bewegen und es von der 3.6-Version zu entkoppeln. In dieser Niederlassung werden wir weiterhin die Java 7 Features entwickeln, wie sie öffentlich zugänglich werden. Wir werden separate Updates für die offiziellen Builds liefern, um frühen Zugriff auf Java 7 Features bereitzustellen.

+1

+1 für dieses Bild geplant :) (und der Rest der Informationen natürlich) – BalusC

+0

Vielen Dank, dass Sie die Eclipse-Pläne für die Unterstützung von Java 7 zitiert haben. Sie erwähnen, dass sie Java 7 in einem anderen Zweig unterstützen werden. Weißt du, wo dieser Zweig der Entwicklung ist? – reprogrammer

+0

@BalusC Ich mochte es auch;) –

3

I Kasse des so genannten JSR 308 Zweig der org.eclipse.jdt.core der folgenden CVS-Repository-Informationen verwenden.

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

Dann folgte ich den Anweisungen, um das ausgecheckte JDT in Eclipse zu installieren. Anschließend habe ich org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java und /org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java nachgeschlagen, um kleine Beispiele zu finden, die JSR 308-Typ Anmerkungen üben.

An dieser Stelle unterstützt und generiert der Zweig die entsprechenden neuen Attribute in den .class-Dateien, wenn Anmerkungen zu Typen vorhanden sind. Annotationsprozessoren scheinen jedoch nicht zu funktionieren.