Программирование 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
Ответы
Ответ 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:
-
(
отложен) Добавить поддержку функций 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, когда присутствуют аннотации по типам. Но, обработчики аннотаций, похоже, не работают.
Ответ 5
Поддержка Java 7 (BETA) теперь доступна в JDT. См. http://thecoderlounge.blogspot.com/2011/06/java-7-support-in-eclipse-jdt-beta.html