在 Eclipse 中编程 Java 7

问题描述 投票:0回答:6

我安装了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 line 7 Java Problem

令牌“<", ? expected after this token Try.java /TryJava7/src line 7 Java Problem

存在语法错误”

尽管我已将编译器的合规级别设置为 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
java eclipse java-7
6个回答
40
投票

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

  • (new) 推迟)添加对 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 功能。


18
投票

请参阅 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

 分支已合并到 
HEAD
R3_7_maintenance
(请参阅 
eclipse-dev 存档)。

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


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

Netbeans 应该可以工作。


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 文件中生成相应的新属性。但是,注释处理器似乎不起作用。


2
投票
JDT 现已提供 Java 7 支持(BETA)。请参阅

http://thecoderlounge.blogspot.com/2011/06/java-7-support-in-eclipse-jdt-beta.html


0
投票
14 年后,该支持将在

Eclipse 4.33(2024 年第 3 季度)中逐步取消:

删除了对源、目标和发行版 Java 7 及以下版本的支持

以下编译器选项现在仅支持 Java 8 及更高版本:

--source --target --release
即,从 Eclipse 4.33 开始,Eclipse IDE 和 

ecj 将不再能够生成 JRE 7(及更低版本)兼容的字节代码,因为上述选项仅支持 Java 8+。 这相当于 Java 21 的 javac 仅支持 Java 8+ 的那些选项。

© www.soinside.com 2019 - 2024. All rights reserved.