【问题标题】:Programming Java 7 in Eclipse在 Eclipse 中编程 Java 7
【发布时间】:2011-02-07 23:29:40
【问题描述】:

我安装了JDK 7Eclipse 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 给出了以下错误消息。

HashMap 类型的参数数量不正确;无法使用参数对其进行参数化 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

【问题讨论】:

  • @Oscar Reyes,我认为 Java 7 闭包规范尚未正式发布。
  • @Oscar 闭包计划用于 jdk8

标签: java eclipse java-7


【解决方案1】:

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

Netbeans 应该可以工作。

【讨论】:

    【解决方案2】:

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

    • ( deferred) 添加对 Java SE 7 功能的支持。下一个功能 Java SE 的发行版是第 7 版,其中 可能会在 2010 年下半年。而 此版本的内容仍然 正在讨论中,该版本是 预计将包含对 Java 语言,包括注解 关于类型(JSR-308),模块化支持 (JSR-294) 和其他次要语言 变化(硬币项目)。日食Java 工具将包括初始支持 用于编译、编辑和启动 Java 7 的应用程序 已公开的部分 规范(此时仅 JSR-308 观点)。 [JDT 核心,JDT UI] (288548)

      注意:为了调整我们的 与延迟的官员安排 Java 7 外观和由于缺乏 公开可用的规范 (包括缺少 Java 7 JSR),我们 已决定搬迁发展 工作到一个单独的分支并解耦 它来自 3.6 版本。在那里面 分公司,我们将继续开发 Java 7 的特性 可公开访问。我们将交付 官方单独更新 为了尽早提供 访问 Java 7 功能。

    【讨论】:

    • +1 for that image :) (当然还有剩余的信息)
    • 感谢您引用 Eclipse 支持 Java 7 的计划。他们提到他们将在不同的分支中支持 Java 7。你知道那个开发分支在哪里吗?
    • @reprogrammer 不是真的。 Eclipse 存储库对我来说有点太神秘了(dev.eclipse.org/viewcvs/index.cgi),甚至分支的命名也不清楚(例如检查org.eclipse.jdt.core 模块)。也许有人可以提供更好的答案,但我的建议是在 Eclipse 开发人员列表中提问。
    【解决方案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 文件中生成相应的新属性。但是,注释处理器似乎不起作用。

    【讨论】:

      【解决方案4】:

      请参阅http://wiki.eclipse.org/JDT_Core/Java7http://wiki.eclipse.org/PDE/API_Tools/Java7Bug 288548,了解 Eclipse 对 Java 7 的持续支持。有关如何在 Eclipse 中评估 Java 7 的说明,请参阅http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29

      更新 1:BETA_JAVA7 分支已合并到 HEADR3_7_maintenance(参见 eclipse-dev archive)。

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

      【讨论】:

      • 不错的链接!这些真的很有帮助。
      【解决方案5】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-20
        • 2014-07-01
        • 1970-01-01
        • 2012-06-06
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 2012-05-03
        相关资源
        最近更新 更多