Как получить eclipse для использования другой версии компилятора для Java?

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

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

В моем проекте я установил уровень соответствия компилятора равным 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.

Любые идеи, почему?

Ответ 1

В строке меню: Project → Свойства → Компилятор Java

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

Это позволит вам скомпилировать код "1.5" с помощью JDK "1.6".

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

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

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

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

удалить версии 1.6, и: добавить библиотеку... → JRE System LIbrary → Alternate JRE → JRE, которую вы хотите.

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

Ответ 2

Во-первых, устанавливаете ли вы желаемую JRE или ваш желаемый JDK?

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

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

Ответ 3

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

Из справки Eclipse > Руководство по разработке Java > Понятия > Java Builder

Конструктор Java строит Java-программы, используя собственный компилятор (компилятор Eclipse для 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 не используется.

Ответ 4

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

Ответ 5

Другой подход для установки компилятора JDK 1.8 с Maven использует этот плагин:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
        <verbose>true</verbose>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk1.8.0_102\bin\javac</executable>
        <source>1.8</source>
        <target>1.8</target>
     </configuration>
 </plugin>