Подтвердить что ты не робот

Что такое "уровень соответствия компилятора" в Eclipse?

В течение некоторого времени я пытался понять, но я до сих пор не понимаю, что означает "уровень соответствия компилятора" для проекта в Eclipse. Я просмотрел весь этот сайт и Google и не смог найти ответ, который мог бы понять.

Скажем, я хочу, чтобы моя программа могла работать на JRE 6.

Я могу сделать: Project > Preferences > Java Build Path > Библиотеки и установить JRE-библиотеку, которую я использую для JRE 6.

Почему этого недостаточно?

Я никогда не понимал, почему мне также нужно установить параметр соответствия компилятора JRE 6.

Я хотел бы понять разницу между использованием JRE 6 в проекте и настройкой соответствия компилятора проекта JRE 6.

Что означает уровень соответствия компилятора?

4b9b3361

Ответ 1

Параметр соответствия компилятора указывает компилятору сделать вид, что это другая версия Java.

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

Если вы установите уровень соответствия на "JRE 6", он вместо этого скомпилирует исходные файлы Java 6 в файлы классов Java 6.

Это как сохранение документа Word как "Word 97-2003 format" - так что Word 97-2003 может читать ваш документ. Вы сохраняете файлы классов в формате Java 6, чтобы Java 6 мог их прочитать.

Ответ 2

Он сообщает вам, какую версию JDK вы придерживаетесь; в частности, какой JRE вы нацеливаете на свою сборку.

Это МИНИМАЛЬНАЯ JRE, необходимая для запуска вашего кода

Ответ 3

Самый простой способ описать параметр "соответствие компилятора Java" заключается в том, что он определяет, какие инструкции Java Virtual Machine могут использоваться в "скомпилированном" Java-коде... и какие версии классов библиотеки должны использоваться. Каждый выпуск JVM (и его библиотек) может вводить новые инструкции (VM) или настраивать библиотеки классов, которые поставляются вместе с JVM.

Вы должны установить настройку на самый низкий уровень JVM, чтобы вы ожидали, что ваш продукт будет запущен.

Ответ 4

Компилятор Java может скомпилировать код, который будет работать в предыдущих версиях JVM. Даже если у вас установлен JDK 6, вы можете писать код, предназначенный для людей, которые используют JDK 5. Уровень соответствия компилятора говорит Eclipse использовать соответствующие настройки при компиляции вашего проекта, чтобы убедиться, что код будет работать на целевой JVM, который вы укажете. По умолчанию, если я помню, Eclipse выбирает соответствие Java 5. Если вы хотите использовать функции кода, специфичные для Java 6 или Java 7, вам придется изменить уровень соответствия.