Программирование Java 7 в Eclipse - PullRequest
50 голосов
/ 14 апреля 2010

Я установил JDK 7 и Eclipse 3.6M6 . Затем я добавил JRE 7 в качестве новой среды выполнения JRE в Eclipse и установил уровень соответствия компилятора на Java 7. Я могу скомпилировать следующий фрагмент кода с помощью командной строки, используя javac, который поставляется с JDK 7.

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

Синтаксическая ошибка на токене "<",? ожидается после этого токена Try.java / TryJava7 / src line 7 Java Проблема </p>

Несмотря на то, что я установил уровень соответствия компилятора для Java 7, похоже, что Eclipse еще не понимает синтаксис Java7. Можно ли поиграть с Java 7 в Eclipse?

Ниже приводится содержание .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

Ответы [ 5 ]

40 голосов
/ 14 апреля 2010

Как указал Алекс, Eclipse использует собственный компилятор, который в настоящее время не поддерживает Java 7, и, как отмечено в плане проекта для проекта Eclipse, версия Helios , поддержка Java 7 откладывается и развязывается с версии 3.6:

  • ((new) отложено) Добавить поддержку функций Java SE 7 . Следующая особенность выпуск Java SE версии 7, которая вероятно будет доступен в Вторая половина 2010 года. Пока содержание этого выпуска все еще обсуждается, что релиз как ожидается, будет содержать расширения Язык Java, включая аннотации по типам (JSR-308), поддержка модульности (JSR-294) и другие второстепенные языки изменения (монетный проект). Затмение Ява оснастка будет включать в себя начальную поддержку для компиляции, редактирования и запуска приложения для Java 7 для тех части, которые есть в наличии технические характеристики (только JSR-308 в этом точка). [JDT Core, JDT UI] ( 288548 )

    ПРИМЕЧАНИЕ: Чтобы выровнять наши график с задержанным официальным Java 7 внешний вид и из-за отсутствия общедоступные спецификации (включая отсутствие Java 7 JSR), мы решили перенести разработку работать в отдельной ветке и отделить это из версии 3.6. В этом филиал мы продолжим развивать Особенности Java 7 по мере их появления общедоступный. Мы доставим отдельные обновления для официальных строит для того, чтобы обеспечить рано доступ к функциям Java 7.

18 голосов
/ 02 февраля 2011

См. http://wiki.eclipse.org/JDT_Core/Java7, http://wiki.eclipse.org/PDE/API_Tools/Java7 и Ошибка 288548 для постоянной поддержки Eclipse для Java 7. И смотрите http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_%28BETA%29 для инструкций по оценке Java 7 в затмении.

ОБНОВЛЕНИЕ 1: Ветвь BETA_JAVA7 была объединена с HEAD и R3_7_maintenance (см. Архив eclipse-dev ).

ОБНОВЛЕНИЕ 2: Eclipse 3.7.1 (Indigo SR1) поддерживает Java 7 .

6 голосов
/ 14 апреля 2010

Eclipse имеет собственный встроенный компилятор Java. Поэтому, если нет бета-версии Eclipse или чего-то подобного, что уже может скомпилировать Java 7, тогда вам не повезло.

Netbeans должен работать.

3 голосов
/ 20 мая 2010

Я извлекаю так называемую ветку JSR 308 org.eclipse.jdt.core, используя следующую информацию о хранилище CVS.

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

Затем я следовал инструкциям, чтобы установить извлеченный JDT в Eclipse. Впоследствии я посмотрел вверх 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 голосов
/ 28 июня 2011

Поддержка Java 7 (BETA) теперь доступна в JDT. Смотри http://thecoderlounge.blogspot.com/2011/06/java-7-support-in-eclipse-jdt-beta.html

...