Сокращенный синтаксис Diamond не работает в javac

Когда я собираю это:

LinkedBlockingDeque<Integer> q = new LinkedBlockingDeque<>();

в версии Eclipse Java EE Kepler все работает нормально, но однажды я пытаюсь скомпилировать ту же программу в терминале с

javac myProgram.java

в командной строке я получаю сообщение об ошибке "недопустимый запуск типа", <>

Я знаю, что Алмазное Сокращение поставлялось с Java 7, так почему бы терминалу использовать javac из Java 6, а не 7? И как я могу исправить это навсегда? Я на Linux, Mint 15.

Запуск javac -версии показал это

~ $ javac -version
    javac 1.6.0_27

3 ответа

Решение

По-видимому, у вас установлены две отдельные версии Java. В Eclipse вы можете указать местоположение вашего JDK, которое установлено в 1.7. Однако в терминале переменная PATH содержит (сначала) местоположение JDK 1.6. Похоже, вы используете Linux/ Unix, попробуйте распечатать PATH переменная:

$ echo $PATH

Там вы увидите путь к JDK 1.6; путь к JDK 1.7 также может быть там, но после пути JDK 1.6. Отредактируйте свой ~/.profile файл и отредактируйте путь соответственно - удалите JDK 1.6 и добавьте JDK 1.7.

Если, с другой стороны, путь к JDK 1.6 установлен на системном уровне (например, в /etc/profile), то проще всего было бы добавить эту строку в ваш ~/.profile файл:

export PATH="/path/to/jdk1.7/bin:$PATH"

После редактирования этого файла выйдите и войдите снова.

Вы не добавили каталог Java 7 bin в свой PATH переменная окружения. Или, может быть, Java 6 также находится там и находится до пути Java 7.

В eclipse.. Перейдите в свойства проекта -> Java Compiler и выберите нужную версию Java-компилятора.

Другие вопросы по тегам