Как мне получить Eclipse для использования другой версии компилятора для Java? - PullRequest
33 голосов
/ 29 марта 2010

Кажется, что это должно быть простой задачей, с опциями в меню Preferences для разных JRE и возможностью устанавливать разные компиляторы и пути компоновки для проекта. Однако, это также, кажется, просто не работает.

Например, я установил JAVA_HOME в jre для Java 1.6. Мне до сих пор неясно, как Eclipse использует это, но, похоже, это по умолчанию и не принимает переопределения проекта. Я также установил Java 1.5 и добавил JRE для этого в eclipse в разделе Java-> Установленные JRE.

В моем проекте я установил уровень соответствия компилятора на 1,5. В пути сборки проекта я добавил Системную библиотеку для Java 1.5 JRE. Тем не менее, я получаю ошибки компиляции для класса, который реализует PreparedStatement для не реализации абстрактных методов, которые существуют только в Java 1.6 PreparedStatement. В частности, методы

setAsciiStream(int, InputStream, long) and 
setAsciiStream(int, InputStream)

Как ни странно, он работал, когда мы компилировали его для Java 1.4, для которой он изначально был написан. Мы добавили JRE для Java 1.4 и обратились к этой системной библиотеке в проекте, установили уровень компилятора проекта на 1.4, и он работает нормально. Но когда я делаю те же изменения, чтобы попытаться указать на Java 1.5, он вместо этого использует 1.6.

Есть идеи, почему?

Ответы [ 4 ]

52 голосов
/ 29 марта 2010

Из строки меню: Проект -> Свойства -> Java Compiler

Включить специфические настройки проекта (проверено) Снимите флажок «использовать Compliance из среды выполнения» .... Выберите желаемый «уровень соответствия компилятора»

Это позволит вам скомпилировать код «1.5», используя «1.6» JDK.

Если вы хотите использовать 1.5 JDK для создания кода, совместимого с «1.5», то установите подходящий JDK 1.5 и скажите eclipse, где он установлен:

Окно -> Настройки -> Установленные JRE

А затем вернитесь к своему проекту

Проект -> свойства -> Путь сборки Java -> библиотеки

удалить системные библиотеки 1.6 и: добавить библиотеку ... -> Системная библиотека JRE -> Альтернативная JRE -> Необходимая JRE.

Убедитесь, что правильный JRE находится на пути сборки проекта, сохраните все и наслаждайтесь!

4 голосов
/ 18 февраля 2016

Eclipse использует собственный внутренний компилятор, который может компилироваться в несколько версий Java.

Из Справки Eclipse> Руководство пользователя по разработке Java> Основные понятия> Java Builder

Java-конструктор создает Java-программы с использованием собственного компилятора (Eclipse Compiler for Java), который реализует спецификацию языка Java.

Для Eclipse Mars.1 Release (4.5.1) это может быть от 1,3 до 1,8 включительно.

При настройке проекта:

[project-name] > Properties > Java Compiler > Compiler compliance level

Это настраивает компилятор Java Eclipse для компиляции кода с указанной версией Java, обычно сегодня 1.8.

Переменные среды хоста, например, JAVA_HOME и т. Д., Не используются.

Компилятор Oracle / Sun JDK не используется.

3 голосов
/ 29 марта 2010

Прежде всего, вы устанавливаете желаемую JRE или желаемую JDK?

Даже если ваш Eclipse настроен правильно, где-то может быть дурацкая настройка для конкретного проекта. Вы можете открыть контекстное меню для данного проекта Java в Project Explorer и выбрать Свойства> Компилятор Java, чтобы проверить это.

Если ничего из этого не помогло, оставьте комментарий, и я еще раз посмотрю.

1 голос
/ 30 марта 2010

Просто чтобы уточнить, есть ли у вас JAVA_HOME, установленная в качестве системной переменной или установленная в переменных пути Eclipse? Я почти уверен (но не полностью уверен!), Что системная переменная используется компилятором командной строки (и Ant), но Eclipse изменяет это в соответствии с используемым JDK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...