在Eclipse中编程Java 7

我安装了JDK 7和Eclipse 3.6M6 。 然后,我在Eclipse中添加了JRE 7作为新的JRE执行环境,并将编译器的合规性级别设置为Java 7.我可以使用JDK 7附带的javac通过命令行编译以下代码片段。

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

但是,Eclipse提供了以下错误消息。

types为HashMap的参数数量不正确; 它不能用参数参数化Try.java / TryJava7 / src第7行Java问题

令牌上的语法错误“<”,? 期待这个令牌Try.java / TryJava7 / src第7行Java问题

尽pipe我已经将编译器的合规性级别设置为Java 7,但看起来Eclipse并不理解Java7语法。 Eclipse中可以使用Java 7吗?

以下是.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> 

以下是.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 

正如Alex所指出的那样,Eclipse使用自己的编译器,它目前不支持Java 7,正如Eclipse Project项目计划Helios版本中所指出的那样,Java 7的支持被推迟并与3.6版本分离:

  • (新) 延迟) 添加对Java SE 7function的支持 。 Java SE的下一个function版本是版本7,该版本可能会在2010年下半年推出。虽然本版本的内容仍在讨论中,但是该版本预计将包含对Java语言的扩展,包括对types的注释(JSR-308),模块化支持(JSR-294)和其他小语言变更(Coin项目)。 Eclipse Java工具将包括对具有公开可用规范(此时仅用于JSR-308)的那些部分的Java 7编译,编辑和启动应用程序的初始支持。 [JDT核心,JDT UI]( 288548

    注:为了使我们的日程安排与官方推迟的Java 7外观一致,并且由于缺less公开可用的规范(包括缺lessJava 7 JSR),我们决定将开发工作移到单独的分支,并将其与3.6版本。 在该分支中,我们将继续开发Java 7function,因为它们可以公开访问。 我们将为官方版本提供单独的更新,以提供对Java 7function的早期访问。

请参阅http://wiki.eclipse.org/JDT_Core/Java7,http:://wiki.eclipse.org/PDE/API_Tools/Java7和Bug 288548 ,了解Eclipse for Java 7的持续支持。请参阅http:// wiki .eclipse.org / JDT / Eclipse_Java_7_Support_%28BETA%29了解如何在Eclipse中评估Java 7。

更新1: BETA_JAVA7分支已被合并到HEADR3_7_maintenance (请参阅eclipse-dev存档 )。

更新2: Eclipse 3.7.1(Indigo SR1)支持Java 7 。

Eclipse有自己的embedded式Java编译器。 所以如果没有Eclipsetesting版或类似的东西,已经可以编译Java 7,那么你运气不好。

Netbeans应该工作。

我使用以下CVS存储库信息检出org.eclipse.jdt.core的所谓JSR 308分支。

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

然后,我按照说明在eclipse中安装检出的JDT。 随后,我/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java了一下org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeTypeAnnotationTest.java/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java JSR 308types注释的小例子。

此时,分支支持并在types注释存在时在.class文件中生成相应的新属性。 但是,注释处理器似乎不工作。

Java 7支持(testing版)现在在JDT中可用。 请参阅http://thecoderlounge.blogspot.com/2011/06/java-7-support-in-eclipse-jdt-beta.html