Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с циклами в мидлете, Любой цикл в startApp() завершает работу 
V
    Опции темы
everyone
Дата 12.1.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



При запуске мидлета, эмулятор(J2ME Wireless Toolkit 2.0_01 (15.10.2003 15:13)) работает нормально только если в теле переопределённого метода startApp() нет циклов. Совершенно любой цикл заканчивает работу эмулятора, выводится
Цитата

Error verifying method runup startApp()V
Approximate bytecode offset 55: Inconsistent or missing stackmap at target
ALERT: Error verifying class runup


--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
W0LF
Дата 12.1.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



а кто это тебя научил в startApp() использовать циклы???

Добавлено @ 18:07 
возьми любой пример из wtk


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
everyone
Дата 12.1.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Цитата

а кто это тебя научил в startApp() использовать циклы???


А почему нет? Я не нашёл в руководстве - ...И теперь самое главное - не используйте в startApp() циклы!!!. Семантически это ничему не противоречит.
Кроме того, эффект тот же самый, если цикл находится в методе вызываемом из другого класса.

Дело в том, что нужно было провести верификацию(preverify), я почему-то решил, что JBuilder делает это автоматически)
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Antropoid
Дата 12.1.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Действительно, что такого в наличии циклов в startApp()?
Не знаю, как там у
Цитата(everyone @  12.1.2007,  17:58 Найти цитируемый пост)
J2ME Wireless Toolkit 2.0_01 (15.10.2003 15:13)

а у J2ME Wireless Toolkit Version 2.2 (25.10.2004 22:21) проблем с циклами в startApp() - нет.


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Samuil
Дата 12.1.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



everyone, C JBuilder все Ок. Если надо могу дать простенький пример , как правильно писать мидлет.


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
everyone
Дата 13.1.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Цитата

everyone, C JBuilder все Ок. Если надо могу дать простенький пример , как правильно писать мидлет.


Если собирать через Wireless Toolkit, то создаётся каталог - /tmpclasses с откомпилированными файлами, а потом они верифицируются в /classes, можно как-нибудь, чтобы JBuilder делал то же самое? У меня он только компилирует классы, как для SE. Проблему я решил, создав Externsl Build Task(Tools->Externsl Build Task) вызываюжий preverify -classpath "../j2mewtk2.0/lib/midpapi.zip" -d classes classes после компиляции, но что-то мне подсказывает, что это сделано в обход более простого варианта)
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
Samuil
Дата 14.1.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



everyone, Тебе надо подключить JDK ME делай так: Tools=>Configure=> JDKs=> в окне выбирай: new=> erf;b gfgre c WTK и выбири ее. Зайди в Project=> projectProper. => и выбири какой JDK использовать(в данном случае который Ты создал). Дальше надеюсь сам заюзаешь!?


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
everyone
Дата 14.1.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 24.3.2004

Репутация: нет
Всего: 4



Цитата

Тебе надо подключить JDK ME делай так:...


Да я то подключил, так изначально всё и стояло, когда возникла проблема с циклами..., но верификация по умолчанию не производитсяsmile Да ну и хрен с нейsmile, с Wireless Toolkit ведь всё работает.

Это сообщение отредактировал(а) everyone - 14.1.2007, 12:28
--------------------
Что написал, то написал (Пилат)
PM ICQ Skype   Вверх
W0LF
Дата 15.1.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

...И теперь самое главное - не используйте в startApp() циклы!!!

smile 

Цитата

Давайте задумаемся, как запускается наш мидлет? Судя по всему, для его загрузки и запуска AMS(application management software) использует код, похожий на приведенный ниже.

 // Load and start a MIDlet
 String name = readMIDletName();
 MIDlet m = null;

 try {
  m = (MIDlet) Class.forName( name ).newInstance();
  registerMIDlet( m );
 }
 catch( Throwable e ){
  abortMIDlet( name, m );
 }


Этот код имеет слабое место: если мидлет зависнет в процессе работы его конструктора или запуска, будет блокирована и работа AMS. Более надежный AMS порождает для загрузки и запуска приложения новый поток.  Затем он некоторое время ожидает завершение инициализации мидлета, и если этого не происходит, завершает его работу. Таким образом, система остается в рабочем состоянии. 

Сам по себе мидлет не имеет механизма контроля за процессом запуска, поэтому при разработке приложений старайтесь писать быстрый  и надежный метод startApp().



Так же нежелательно вешать циклы на commandAction, keyPressed


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
javastic
Дата 15.1.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Логичное рассуждение.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.