Почему Eclipse жалуется, что в проекте указано соответствие компилятора 1.8, но используется JRE 11? - PullRequest
0 голосов
/ 16 марта 2019

Я установил соответствие компилятора проекта Eclipse 1,8, потому что я хочу создавать файлы JAR, которые могут выполняться на компьютерах с установками JRE 8.

Однако на моем компьютере для разработки у меня установлена ​​только JRE 11.Я предположил, что это будет нормально, потому что ожидал, что JRE 11 сможет выполнять файлы 1.8 и выше.

Однако Eclipse выдает предупреждение об этом (которое я не могу найти способ отключить) и компиляторВ диалоговом окне настроек говорится: «При выборе соответствия 1.8 убедитесь, что установлена ​​и активирована совместимая JRE (в настоящее время 11)», что делает звук, как будто JRE 11 не совместим с 1.8.Так ли это на самом деле?

Какие неправильные предположения я здесь делаю, в точности?

Кроме того, действительно ли мне нужно установить JRE 8 для создания кода, совместимого с JRE 8?

Ответы [ 3 ]

2 голосов
/ 16 марта 2019

В Проект> Свойства: Java Compiler установите флажок Использовать параметр --release , чтобы избежать предупреждения.

С Использовать опцию --release , а уровень соответствия компилятора, установленный на 1.8 , например " foo ".strip(), отображается как ошибка даже с Java 11 JDKпотому что String#strip(), который был представлен в Java 11, отсутствует в Java 8.

enter image description here

См. также:

1 голос
/ 16 марта 2019

Если вы хотите быть на 100% уверены, скомпилируйте тот же JDK, который вы будете использовать в рабочей среде, по крайней мере, с той же основной версией.JRE 11 может точно выполнить файлы классов 1.8.Однако более старая JVM может не поддерживать файлы более новых классов.Даже если вы ориентируетесь на старую версию и создаете файлы классов, которые должны быть совместимыми, вы, вероятно, компилируете для более новых классов JDK, и API действительно меняется.Это может сломать ваш код, если вы попытаетесь запустить его на более старой JVM.

Большую часть времени он будет работать, но лучше, чем потом сожалеть!Прислушайтесь к предупреждениям в этом случае, у них есть точка.

РЕДАКТИРОВАТЬ: см. Ответ по воплю вместо опции --release.

0 голосов
/ 16 марта 2019

Есть ли шанс, что вы не установили JDK? Если я правильно помню, предупреждение было связано с этим. Похоже, в моей комбинации Eclipse, OpenJDK и Ubuntu отсутствует пакет openjdk-11-jdk.

...