2010-04-14 102 views
50

我安装了JDK 7Eclipse 3.6M6。然后,我添加JRE 7作为Eclipse的一个新的JRE的执行环境,并使用随JDK 7.在Eclipse中对Java 7进行编程

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

public class Try { 

    public static void main(String[] args) { 
     Map<Integer, String> map = new HashMap<>(); 
    } 
} 
javac设置编译器符合水平到Java 7.我可以通过命令行编译下面的代码段

但是,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> 

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

它是否已关闭? :-( – OscarRyz 2010-05-19 20:16:13

+0

@Oscar Reyes,我不认为Java 7封闭规范已经正式发布 – reprogrammer 2010-05-23 15:48:06

+5

@Oscar闭包计划为jdk8 – 2011-02-25 00:11:47

回答

18

http://wiki.eclipse.org/JDT_Core/Java7http://wiki.eclipse.org/PDE/API_Tools/Java7Bug 288548为Java 7中的持续支持Eclipse的,看看http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29关于如何在Eclipse的Java评价7指令。

UPDATE 1:BETA_JAVA7分支已被合并到HEADR3_7_maintenance(见eclipse-dev archive)。

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

+0

不错的链接!这些真的很有帮助。 – 2011-02-27 13:15:44

6

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

Netbeans应该工作。

40

亚历克斯指出,Eclipse使用自己的编译器目前不支持Java 7,如Project Plan For Eclipse Project, version Helios指出,对Java 7的支持被推迟,并从3.6版本脱钩:

  • (new)推迟)添加对Java SE 7功能的支持。的Java SE的一个功能 版本是7版本,这可能 将可在2010年 下半年虽然此版本的 内容仍在讨论 ,该版本是 预期包含扩展到 Java语言,包括关于类型(JSR-308),模块化支持 (JSR-294)和其他小语言 变更(Coin项目)的注释 。 Eclipse的Java的 工具将包括编译,编辑,并推出 应用程序的Java 7的 部分具有公共可用规范 (仅JSR-308在这点 )初步支持 。[JDT核心,JDT UI(288548

    注:为了使我们的 时间表与延迟官方 Java 7的外观和由于缺乏 公开发行的规范 (包括缺乏一个Java 7的JSR),我们 决定将开发 工作转移到一个单独的分支,并从3.6版本中解耦 。在那个 分支中,我们将继续开发 Java 7功能,因为它们变成 可公开访问。我们将为官方 构建提供 单独更新,以便提前访问Java 7功能 。

+1

+1(对于该图:))(当然还有剩余的信息) – BalusC 2010-04-14 17:04:24

+0

感谢您引用Eclipse支持Java 7的计划。他们提到他们将在不同的分支中支持Java 7。你知道这个开发部门在哪里吗? – reprogrammer 2010-04-14 17:08:06

+0

@BalusC我也喜欢它;) – 2010-04-14 17:23:50

3

我使用下面的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/NegativeTypeAnnotationTest.java/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java以提供执行JSR 308类型注释的小例子。

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

相关问题