在Eclipse中编写Java 7

rep*_*mer 50 java eclipse java-7

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

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

public class Try {

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

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

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

令牌"<"上的语法错误,?预计在此令牌后Try.java/TryJava7/src第7行Java问题

尽管我已将编译器的合规性级别设置为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>
Run Code Online (Sandbox Code Playgroud)

而且,以下是内容.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
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 40

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

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

    注意:为了使我们的日程安排与延迟的官方Java 7外观保持一致,并且由于缺乏公开的规范(包括缺少Java 7 JSR),我们决定将开发工作转移到一个单独的分支并将其与3.6发布.在该分支中,我们将继续开发Java 7功能,因为它们可以公开访问.我们将为官方版本提供单独的更新,以便提供对Java 7功能的早期访问.


rep*_*mer 18

http://wiki.eclipse.org/JDT_Core/Java7,http://wiki.eclipse.org/PDE/API_Tools/Java7错误288548为Java 7中的持续支持Eclipse的,看到的http://维基.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29,了解如何在Eclipse中评估Java 7.

更新1:BETA_JAVA7分支已合并HEADR3_7_maintenance(见Eclipse的开发归档).

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


Axe*_*ing 6

Eclipse有自己的嵌入式Java编译器.因此,如果没有eclipse beta或类似的东西已经可以编译Java 7那么你就不走运了.

Netbeans应该工作.