Могу ли я сделать.jar файл совместимым со старыми версиями Java

Я получаю эту ошибку:

из-за моей версии Java. Я хотел бы сделать файл.jar совместимым со старыми версиями Java, а также с более новыми версиями. Мой компьютер не проблема, но моя аудитория использует более старые версии Java. Как я могу сделать свою программу совместимой со старыми версиями, а также с более новыми версиями и как далеко я должен идти с ней?

5 ответов

Решение

Вы можете вернуться и скомпилировать ваши исходники и сгенерировать новый файл jar со старым javac, который совместим с конкретной версией java.

Для этой цели вы можете использовать среду IDE NetBeans.

Выполнить >> Задать конфигурацию проекта >> Настроить >> На левой панели выберите "Источники". Наконец, выберите минимальную версию JDK в формате "Источник / Бинарный формат".

Либо скомпилируйте ваш jar-файл с помощью старого компилятора, либо установите для цели java версию, поддерживаемую вашими клиентами.

Чтобы установить версию, следуйте этой теме: Установка целевой версии Java в ant javac

UnsupportedClassVersionError не о JAR (JAR - это просто zip-архив), а о классах внутри JAR.

.class файлы являются просто скомпилированными исходными кодами Java и имеют формат ByteCode, который JVM (виртуальная машина Java) использует для выполнения операций на базовой платформе. Формат байт-кода меняется время от времени (Java существует с 1991 года), и поэтому номера версий, которые жестко запрограммированы в форматах скомпилированных классов, обычно меняются между выпусками JRE.

tl; dr: Что вам нужно сделать, так это получить исходный код и пересобрать его в соответствии с JRE, который вы хотите. Невозможно просто указать файлам классов изменить или быть совместимыми со старыми версиями. Доступны архивные версии JRE, но вам придется зарегистрировать учетную запись для загрузки версий, отличных от последних.

РЕДАКТИРОВАТЬ

Я не обращал внимания на номер версии. Ваш .class файлы скомпилированы с J2SE 1.8, и вы работаете с JRE7. Установите JRE 1.8.

Единственный способ убедиться, что ваш код действительно совместим с более старой основной версией Java, - это скомпилировать под JDK этой версии. Хотя его можно компилировать для более старой версии JVM, вы никогда не можете быть уверены, что не используете методы / классы, которые не существуют в более старой JRE, если вы используете более новый JDK для компиляции.

Чтобы убедиться, что ваш код действительно работает с новой JRE, вам нужно протестировать его с новой JRE. Это невозможно, хотя более новые JRE сохраняют отличную обратную совместимость, но есть некоторые небольшие отличия, которые могут испортить ваш код.

Другие вопросы по тегам