Консультация № 174491
23.11.2009, 18:16
0.00 руб.
0 6 1
Уважаемые эксперты!

При запуске java программы на siemens me75 выдается ошибка:

midlet initialization failed:
java.lang.noclassdef founderror: javax/bluetooth/discoveryListener

Где можно найти соответствующий клаcc, чтобы добавить его в мидлет и т.о. запустить программу?

Обсуждение

Неизвестный
23.11.2009, 18:26
общий
это ответ
Здравствуйте, Mikhail-V.

Этот класс относится к Bluetooth API (JSR-82), а Bluetooth на Siemens ME75 нет, соответственно эту программу на данном телефоне запустить не удастся.
Неизвестный
23.11.2009, 18:39
общий
...Этот класс относится к Bluetooth API (JSR-82), а Bluetooth на Siemens ME75 нет, соответственно эту программу на данном телефоне запустить не удастся. ...

Вопрос заключался в другом - где взять классы ?
Неизвестный
23.11.2009, 18:46
общий
Эти классы расположены в прошивке телефона, соответственно ответ - взять их негде. Как вариант - можно написать свой вариант на основании описания API.
Неизвестный
23.11.2009, 18:55
общий
В основе j2me лежит несколько стандартов: CLDC (1.0 или 1.1) и MIDP (1.0 или 2.0). Стандарты эти обратно совместимы, т.е. если устройство поддерживает MIDP 2.0, оно будет корректно (должно, но не обязано) работать с MIDP 1.0. Производители мобильных устройств выпустили расширения для стандартов MIDP-1, в которых содержатся специфические для данного устройства возможности или оптимизированные способы работы с графикой. Например, это могут быть классы для работы со звуком, виброй, подсветкой, динамическим светом или файловой системой. Надо заметить, что с поддержкой стандарта MIDP-2 производители, например Siemens, пометили такие специфические классы как "нерекомендуемые", так что это должно положительно сказаться на совместимости.

Адаптация к запуску, по сути, ряд операций, которые позволяют запустить платформо-зависимый мидлет на другом устройстве. Характерная ошибка, которая возникает при попытке запуска платформо-зависимого мидлета: "Midlet initialization failed: java.lang.NoClassDefFoundError: com/samsung/util/AudioClip". В данном случае, как видно из сообщения об ошибке, мы имеем дело с мидлетом, который был написан для платформы Samsung. Что можно предпринять в таком случае? Можно воспользоваться тем, что Виртуальная Ява машина при поиске классов использует относительный путь, принимая за точку отсчета сам мидлет - ведь API так же находится в jar архиве! Т.е. проще говоря мы попробуем добавить недостающие классы в подопытный мидлет. Мидлет, естественно, продолжит вызывать специфические классы, но они будут изолироваться. После такой процедуры, как правило, программы запускаются и работают на другой платформе, но с определенными ограничениями или глюками: управление может оказаться частично не доступным (управляющие коды джойстика и софт-клавиш различаются), не будет звука, вибры, подсветки (если они реализованы через специфические апи), ошибки отрисовки графики из-за разницы в реализации графических функций. И самое важное: если размеры экранов не совпадают, то таким образом вы НИКАК не добьетесь перемасштабирования (это должны были сделать авторы мидлета)! Т.е. этот способ подходит для случая когда:

надо посмотреть что это за мидлет
экран вашего устройства совпадает или очень близок по размерам к экрану исходной платформы + вы готовы примириться с возможными проблемами в управлении (охота пуще неволи!)
Неизвестный
23.11.2009, 18:57
общий
Цитата: 306663
Эти классы расположены в прошивке телефона, соответственно ответ - взять их негде. Как вариант - можно написать свой вариант на основании описания API.


Можно воспользоваться тем, что Виртуальная Ява машина при поиске классов использует относительный путь, принимая за точку отсчета сам мидлет - ведь API так же находится в jar архиве! Т.е. проще говоря мы попробуем добавить недостающие классы в подопытный мидлет
Неизвестный
23.11.2009, 19:08
общий
Теоретически это сделать можно т.к. все API открыты, но данный класс будет заглушкой т.к. реального Bluetooth в Siemens ME75 нет. Само описание API можно посмотреть например здесь: http://java.sun.com/javame/reference/apis/jsr082/ или скачать здесь: http://jcp.org/en/jsr/detail?id=82
Форма ответа