#java #java-me #jdk1.6
#java #java-me #java-6
Вопрос:
Я использую CLDC 1.1 MIDP 2.0 . «Уровень соответствия компилятору» установлен на 1.4 .
Когда я устанавливаю «Уровень соответствия компилятору» на 1.6, я получаю следующую ошибку: «ПРЕДУПРЕЖДЕНИЕ: java / lang / ClassFormatError: неверная информация о версии»..
Как я могу использовать java 1.6 с J2ME?
Ответ №1:
Возможно, этот ответ уже устарел, пожалуйста, ознакомьтесь ниже с последними ответами.
Дата: апрель 2011
Как я могу использовать java 1.6 с J2ME?
Вы не можете
Основная причина: J2ME предназначен для мобильных устройств, где память и процессор являются самым большим ограничением.
Комментарии:
1. На самом деле вы можете. Посмотрите на мой ответ.
2. @TZubiri этот ответ был датирован 2011 годом. Прошло ~ 11 лет после этого. конечно, это изменится.
3. О, я не видела дату. В любом случае, это всегда было возможно сделать, в любом случае с течением времени компилировать для этой старой платформы становится все сложнее.
Ответ №2:
Java ME — это подмножество Java, и большая часть специфичного для ME кода будет находиться в основном на клиенте, поэтому вам не нужны какие-либо специальные версии Java для компиляции программы.
Проблема здесь в том, что вы используете версию компилятора Java, которая не существовала, когда был изобретен телефон. Версия компилятора Java записывается в выходные данные компиляции .class.
В идеале вы бы скомпилировали проект с более старой версией Java, но установить старую версию очень сложно. Таким образом, мы можем сами выступать в роли компилятора и вручную устанавливать версию в выходных файлах .class на желаемую версию, и мы должны убедиться, что мы не используем функции после этой версии. В этом случае мы будем ориентироваться на версию 1.2.
Вы можете использовать параметры компилятора -source и -target, чтобы запретить как можно больше функций, но многие компиляторы javac имеют ограничение на более старые версии, на которые они могут быть нацелены, моя Java 9 (1.9) может быть ниже 1.6. Вам нужно будет вручную убедиться, что вы не используете функции, представленные между 1.2 и 1.6
Первые 4 байта в файле .class — это печально известная волшебная строка «CAFEBABE». байты 5 и 6 обычно равны 0, байты 7 и 8 — это младшая и основная версии Java.
Измените байт 8 на 0x2E. Согласно https://en.wikipedia.org/wiki/Java_class_file это соответствует версии 1.2 или Java2.
Мы используем Java2, потому что, как вы можете видеть по его инициалам J2ME, Micro Edition была выпущена на Java 2. Таким образом, по соображениям обратной совместимости вы можете быть достаточно уверены, что телефон будет запускать такие приложения. Если вам нужны функции, представленные после этой версии Java, просто продолжайте увеличивать номер версии, пока снова не удастся узнать точную версию Java, поддерживаемую вашим телефоном.
Ответ №3:
вы не можете его использовать, потому что он предназначен для se и ee версий, не совместимых с мобильными
доступен последний sdk для j2me 3.0