Невозможно изменить основную версию исполняемого файла jar в eclipse

Я использую Eclipse Luna Service Release 2 (4.4.2). Для проекта Java я не могу ухудшить основную версию с 52 (java 8) до 50 (java 6) для класса внутри исполняемого файла jar. Когда я запускаю java-программу внутри своего затмения, она работает, но когда я создаю файл jar, она показывает ошибку Unsupported major.minor версии 52.0. В моей системе не установлены Java 7 и Java 8.


person Satish Dalal    schedule 23.01.2020    source источник


Ответы (1)


Не удалось изменить основную (файл класса) версию исполняемого jar-файла в Eclipse.

Правильный. Вы не можете сделать это.

Номер версии не является номером версии файла JAR. Это номер версии формата файла класса, который используется для представления классов в этом JAR-файле. (И с технической точки зрения разные файлы классов в JAR могут иметь разные номера версий файлов классов.)

На самом деле вам нужно перекомпилировать код из исходного кода, указав другой номер версии компилятора. Это можно сделать в Eclipse с помощью настроек проекта или (с помощью Maven) в файлах POM. Но обратите внимание, что вы получите наилучшие результаты, если у Eclipse есть доступ к JDK/JRE для целевой версии Java.

(Я не проверял, способен ли компилятор Eclipse Luna генерировать код для Java 6. Я смутно припоминаю, что эта опция убрана для некоторых компиляторов Java. Поддержка генерации кода для нескольких старых платформ мешает прогрессу. Так что вам возможно придется использовать более старую версию Eclipse...)


Сказав об этом, вы не должны использовать Java 7 или более раннюю версию. Они были в конце жизни в течение ряда лет. Вам не хватает нескольких лет исправлений безопасности и других хороших вещей. Рекомендуется обновить свои платформы сборки и исполнения как минимум до Java 8 или Java 11... как только это станет практически возможным.

В моей системе не установлены Java 1.7 и 1.8.

Да... исправьте это. Установите Java 1.8 == Java 8.

person Stephen C    schedule 23.01.2020
comment
Спасибо, но я перекомпилировал код и снова экспортировал исполняемый файл jar, но результат тот же. На самом деле мне нужен только скомпилированный класс Java 6. В моей системе не установлены java 7 и java 8, тогда как файлы классов java компилируются версии 52. - person Satish Dalal; 23.01.2020
comment
Eclipse использует внутренний компилятор; см. как мне получить eclipse использовать другую версию компилятора для Java?. - person Emmanuel Chebbi; 23.01.2020
comment
Правильный. И этот компилятор способен генерировать байт-коды для нескольких целевых версий classfile. Итак, вам нужно настроить Eclipse так, чтобы он делал то, что вы хотите; см. мой ответ. В качестве альтернативы запустите свои компиляции из командной строки, используя инструмент сборки, такой как maven, ant, gradle, и соответствующим образом установите инструкции по сборке. - person Stephen C; 23.01.2020