Як це виправити?
Ця помилка означає, що JRE, який використовується для виконання коду класу, не розпізнає використану версію Java. Зазвичай тому, що версія Java, яка генерувала файл вашого класу (тобто компілювала його), є новішою.
Щоб виправити це, ви можете будь-який
a) Скомпілюйте джерела Java з тією самою або старішою версією компілятора Java, яку буде використано для її запуску. тобто встановіть відповідний JDK.
b) Компілюйте джерела 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, і тому вона викликається замість тієї, яку ви очікуєте .