Сокращенный синтаксис 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-компилятора.