Как мне это исправить?
Эта ошибка означает, что 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 и поэтому вызывается вместо той, которую вы ожидаете ,