Java неподдерживаемая версия - Классическая проблема - PullRequest
1 голос
/ 22 октября 2009

Если вы когда-либо использовали java, я думаю, что по крайней мере один раз вы получали ошибку о неподдерживаемой версии. Всем известно, как это исправить, изменить JRE и т. Д.

Сегодня я хотел бы знать, как создать JAR-файл, который может запускаться где угодно (любой JRE).

Ответы [ 5 ]

5 голосов
/ 22 октября 2009

Краткий ответ: невозможно.

Лучший ответ: определите свою минимальную цель (которая на самом деле не должна быть «любой JRE»). Возможно, вы имеете в виду «стандартную установку J2SE 1.4» или «на андроид» (что не действительно «JRE»).

Точное минимальное требование - это сочетание используемых функций языка Java, использования API и / или других библиотек (что там, где они скомпилированы?) И различий в разных платформах Java. DVD-плеер очень не похож на рабочий стол.

2 голосов
/ 22 октября 2009

Я не уверен, что вы захотите, чтобы в качестве цели большинство людей в наши дни ориентированы на платформы Java 1.4+, то есть они также будут работать на 1.5 и 1.6, и практически никто не использует какую-либо версию Java ниже 1.4, вы должны быть в безопасности.

Сказав это, не совсем невозможно, просто очень сложно, обслуживание - это кошмар.

0 голосов
/ 22 октября 2009

эта ошибка возникает, когда ваш класс Java скомпилирован в одной версии и запущен в другой версии.

0 голосов
/ 22 октября 2009

Если приложение, которое вы создаете, запрограммировано с использованием синтаксиса Java 1.5, вы можете попробовать использовать Retrotranslator . Он использует манипуляции с байт-кодом для изменения ваших классов и некоторого кода времени выполнения, который может позволить вашему коду работать с JVM версий 1.4 и 1.3.

Конечно, у него много ограничений, но он поддерживает множество функций из спецификации 1.5 (выдержка из его веб-сайта):

Какие функции Java 5.0 поддерживаются?

  • Дженерики
  • Аннотации
  • Размышления о дженериках и аннотациях
  • Типизированные перечисления
  • Autoboxing / распаковка
  • Улучшено для цикла
  • * 1023 с переменным числом аргументов *
  • Ковариантные типы возврата
  • Форматированный вывод
  • Статический импорт
  • Параллельные утилиты
  • Усовершенствования фреймворка коллекций

К концу этой же страницы есть также ссылки на похожие инструменты. Но Ретротранслятор, кажется, единственный, который все еще активно поддерживается.

0 голосов
/ 22 октября 2009

Даже если у вас есть это в качестве цели, вы сможете тестировать только на подмножестве. В зависимости от того, насколько всеобъемлющими являются ваши автоматические тесты, вы, вероятно, захотите определить только небольшой набор - возможно, 6 или около того - правильно поддерживаемых JRE. Если кто-то попытается запустить его на чем-то другом, возможно, это сработает, но вы не можете утверждать, что проверили его.

Если это приложение с графическим интерфейсом, это скорее кошмар, так как тестирование графического интерфейса ужасно. Так что в этом случае вы захотите поддерживать меньшее количество JRE.

Помните, что вам нужно протестировать комбинацию JRE / OS и что существует множество различных ОС - по крайней мере, дюжина различных версий Windows общего пользования (без учета локализаций).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...