Как мне это исправить?
Эта ошибка означает, что JRE, которая используется для выполнения кода вашего класса, не распознает используемую версию Java. Обычно потому, что версия Java, сгенерировавшая ваш файл класса (то есть скомпилированная), новее.
Чтобы исправить это, вы можете
a) Скомпилируйте исходные коды Java с той же или более старой версией компилятора Java, который будет использоваться для его запуска. т.е. установить соответствующий JDK.
б) Скомпилируйте исходные коды Java с более новой версией компилятора Java, но в режиме совместимости. т.е. использовать -target
параметр.
c) Запустите ваши скомпилированные классы в JRE той же или более новой версии, что и JDK, использованный для компиляции классов.
Вы можете проверить версии, которые вы используете в настоящее время
javac -version
для компилятора и java -version
для времени выполнения.
Должен ли я установить JDK и настроить переменную PATH для JDK вместо JRE?
Разумеется, для компиляции установите и настройте нужный JDK.
Для времени выполнения вы можете использовать тот, который поставляется с JDK или автономным JRE, но, тем не менее, убедитесь, что вы установили правильные версии и настроили свой PATH так, чтобы не было никаких неожиданностей.
В чем разница между переменной PATH в JRE или JDK?
Переменная среды PATH сообщает командной оболочке, где искать введенную вами команду. Когда вы печатаете java
, интерпретатор командной оболочки просматривает все местоположения, указанные в PATH
переменной, слева направо, чтобы найти подходящий java
исполняемый файл для выполнения. Если у вас установлено несколько версий Java - т.е.java
исполняемый файл в нескольких местах, указанных в переменной PATH, то первая, с которой сталкиваются при переходе слева направо, будет той, которая выполняется.
Команда компилятора есть javac
и только поставляется с JDK. Команда времени выполнения есть java
и поставляется с JDK и находится в JRE.
Вполне вероятно, что у вас установлена одна версия (51.0 = Java 7) javac
, и у вас также установлена та же версия java
, но другая предыдущая версия java
появляется ранее в PATH и поэтому вызывается вместо той, которую вы ожидаете ,