2010-04-14 12 views
50

Instalé JDK 7 y Eclipse 3.6M6. Luego, añadí JRE 7 como un nuevo entorno de ejecución JRE en Eclipse, y establecer el nivel de conformidad del compilador Java 7. puedo compilar el siguiente fragmento de código a través de la línea de comandos utilizando el javac que viene con el JDK 7.Programación de Java 7 en Eclipse

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

public class Try { 

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

Pero, Eclipse muestra los siguientes mensajes de error.

Número incorrecto de argumentos para el tipo HashMap; no se puede parametrizar con argumentos Try.java/TryJava7/src línea 7 Java Problema

Error de sintaxis en el token "<",? se espera después de esta señal de línea Try.java/TryJava7/src 7 problema de Java

A pesar de que he establecido el nivel de cumplimiento del compilador de Java 7, parece que Eclipse no entiende la sintaxis Java7 todavía. ¿Es posible jugar con Java 7 en Eclipse?

El siguiente es el contenido 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> 

Y, el siguiente es el contenido 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

¿Tiene cierres? :-( – OscarRyz

+0

@Oscar Reyes, no creo que la especificación de Java 7 para cierres se haya publicado oficialmente todavía. – reprogrammer

+5

@Oscar Closures están programados para jdk8 –

Respuesta

18

Ver http://wiki.eclipse.org/JDT_Core/Java7, http://wiki.eclipse.org/PDE/API_Tools/Java7 y Bug 288548 por el apoyo continuo de Eclipse para Java 7. Y ver http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29 para obtener instrucciones sobre cómo evaluar Java 7 en Eclipse.

ACTUALIZACIÓN 1: La rama BETA_JAVA7 se ha fusionado a HEAD y R3_7_maintenance (Véase la eclipse-dev archive).

ACTUALIZACIÓN 2:Eclipse 3.7.1 (Indigo SR1) supports Java 7.

+0

¡Buenos enlaces! Esos son realmente útiles. –

6

Eclipse tiene su propio compilador incorporado de Java. Entonces, si no hay una eclipse beta o algo así que ya pueda compilar Java 7, entonces no tienes suerte.

Netbeans debería funcionar.

40

Como Alex señaló, Eclipse utiliza su propio compilador que en la actualidad no es compatible con Java 7 y, como se señaló en el Project Plan For Eclipse Project, version Helios, soporte para Java 7 se difiere y desacoplada de la liberación 3.6:

  • ((new) aplazado) Agregue compatibilidad con Java SE 7 características. La próxima versión de las funciones de Java SE es la versión 7, que probablemente estará disponible en el segunda mitad de 2010. Mientras que los contenido de este comunicado son todavía en discusión, que la liberación es se espera que contengan extensiones a la Lenguaje Java, incluidas las anotaciones sobre tipos (JSR-308), soporte de modularidad (JSR-294), y otros cambios de lenguaje menor (proyecto Coin). Eclipse Java herramientas incluirá soporte inicial para compilar, editar y lanzar aplicaciones para Java 7 para aquellas partes que tienen especificaciones públicamente disponibles (sólo se JSR-308 en este punto ).[JDT Core, JDT UI] (288548)

    NOTA: el fin de alinear nuestro programa con el Java 7 aparición oficial retrasado y debido a la falta de especificaciones disponibles públicamente (incluida la falta de un Java 7 JSR), nosotros hemos decidido mover el trabajo de desarrollo a una rama separada y desacoplarlo de la versión 3.6. En esa rama seguiremos desarrollando las características Java 7, ya que se convierten en de acceso público. Entregaremos actualizaciones por separado para las compilaciones oficiales para proporcionar acceso temprano a a las características de Java 7.

+1

+1 para esa imagen :) (y el remanente de la información, por supuesto) – BalusC

+0

Gracias por citar los planes de Eclipse para admitir Java 7. Mencionan que admitirán Java 7 en una rama diferente. ¿Sabes dónde está esa rama del desarrollo? – reprogrammer

+0

@BalusC Me gustó también;) –

3

que comprobación la llamada rama JSR 308 de org.eclipse.jdt.core utilizando la siguiente información del repositorio CVS.

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

Luego, seguí las instrucciones para instalar el JDT desprotegido en eclipse. Posteriormente, busqué org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java y /org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java para encontrar pequeños ejemplos que hicieran anotaciones tipo JSR 308.

En este punto, la rama admite y genera los atributos nuevos correspondientes en los archivos .class cuando las anotaciones en los tipos están presentes. Pero, los procesadores de anotaciones no parecen funcionar.