Подтвердить что ты не робот

Программирование Java 7 в Eclipse

Я установил 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

Несмотря на то, что я установил уровень соответствия компилятора 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
4b9b3361

Ответ 1

См. 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 в Eclipse.

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

Я проверяю так называемую ветку 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, когда присутствуют аннотации по типам. Но, обработчики аннотаций, похоже, не работают.