![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
Platon |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: нет Всего: 40 |
Здравствуйте уважаемые. Решил попробовать писать в Java ME но что-то заминка на самом старте.
Использую Idea. Стандартная прога срисованная с книжки.
хочу посмотреть что получится, дебажу. Запускаю. В консоли:
Ооо, миленький сотовый ![]() дальше какое то окно с ошибкой
Жму ОК дальше в консоли
жму на сотовом кнопочку Launch, выделен пункт Mid.Mid
Конечно я рад, что процесс завершился без ошибки, но все таки хотелось бы увидеть как она проходит свой путь и какие действия совершаются в сотовом... |
||||||||||
|
|||||||||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Отправлю все-таки в J2ME - там скорее ответят.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Slavca |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 17.2.2005 Где: Новосибирск Репутация: нет Всего: 5 |
Наверное, ты используешь WTK версии выше, чем 2.0.
У меня, например, на WTK2.0 запускается без проблем. А на WTK2.2 вылазиет то что видишь ты. Проблема кроется в том что idea не производит верификацию классов (или, может, производит но как-то не так). Если ты сделаешь следующее, то у тебя должно получиться.
Минус такого подхода - большой: файлы копировать надо, отладку не запустить т.д. Есть еще вариант - написать ant-скрипт для сборки. Вот ссылка с примером: http://developers.sun.com/techtopics/mobil.../ant/index.html Если получится с идеи запускать - ты напиши как. Полезно. Это сообщение отредактировал(а) Slavca - 3.10.2006, 05:44 |
|||
|
||||
Dancer |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
совсем это не выход. Проще подредактировать файлик для сборки через Ant, и работать прямо из IDEA. У меня WTK 2.2 работю напрямую из IDEA. (4.5 с плагином) В 5.0 то же приходится подправлять build.xml ручками, но это не так сложно как кажется
![]() Сейчас расскажу где и что нужно править. Хотя я это уже кому то здесь рассказывать, но может быть это было по переписке, точно не помню. Так что если вдруг кто-то увидет, что что-то похожее я ему уже рассказывал, пусть выложит здесь, чтобы весь честнОй народ знал. И так, приступим. ============================ Есть у нас IDEA 4.5 с плагином J2MESupport, и есть у нас WTK 2.2 (отступлюсь чуть-чуть от темы) Надеюсь что плагин вы установили правильно, иначе без этого в принципе никак ![]() Устанавливаем плагин. 1. Скачиваем это самый J2MESupport с сайта IDEA. (то есть у нас должен быть файлик j2mesupport.jar) 2. У нас должна быть установлена сама IDEA 4.0 или 4.5 (для версии 5.0 этот плагин уже идёт в поставке) 3. Заходим в папочку где установлена IDEA. Далее в plugins. 4. Создаём папочку j2mesupport, заходим в неё и создаём папочку lib. 5. В созданную lib кладём наш j2mesupport.jar Вот вроде бы и всё. Но тут то же есть одна небольшая хитрость. Нам нужно либо прописать наш j2mesupport.jar в CLASSPATH, так как из него нам будет очень необходим один класс, для сборки через Ant нашего мидлета. Либо, можно выковырять из j2mesupport.jar этот нужный файлик и подложить его в ant.jar. Я в принципе всегда подкладываю, так надёжнее ![]() Файлик который нам нужен - FileSize.class находится он в j2mesupport.jar /org/apache/tools/ant/taskdefs Положить его нужно в - ant.jar (тот которым вы пользуетесь для сборки проектов), правильнее сказать, нужно положить всю папочку org из j2mesupport.jar в ant.jar. Если вы используете Ant из IDEA то он находится в папке где установлена IDEA (далее буду называть её IDEA_ROOT), IDEA_ROOT/lib/ant/lib Ещё один способ, скопируйте в IDEA_ROOT/lib/ant/lib ваш j2mesupport.jar. Удалите из j2mesupport.jar всё, кроме папок META-INF и org. Будет вам счастье ![]() Так-с, плагин установил. Смотрим, что он у нас повился: 1. Запускаем IDEA 2. Создаём новый проект, или же открываем уже существующий. (Как небольшое отступление, нету в мидлетах public static main(String str[]){}. Плиз, не нужно этого делать......) 3. При создании нового проекта (обзову его FakeProject), выбираем где он будет у нас сохранён, далее говорим какую Java будем использовать (у меня лишь 1.4.2_12, так что её то я и выбираю ![]() 4. Выбираем Create singe-module project 5. Java Module (в типе модуля) 6. Далее указываете, где будут у вас исходники, клссы и т.д. Вот мы и получили новый проект, под названием FakeProject. Давате теперь настроим в нём весь необходимый Environment, который нам нужен будет для работы ![]() 1. Идём в Settings (Ctrl+Alt+S) или тыкаемся по иконке с гаечным ключом и гайкой-шестерёнкой (хрен её разберёшь). 2. Выбираем во вкладке Project J2ME Support 3. Указываем WTK Home (нажав на три точки, выбиаем папку, где установлен WTK) 4. Устанавливаем галку в checkBox J2ME Support 5. Как только галку эту поставим, вылезает диалоговое окошко, с вопросам где будет наш мидлет, какие в него будут входить классы и так далее. 5.1. Выбираем ProjectName и Project Home для нашего мидлета, я их оставлю теми, что предлагается по умолчанию (FakeProject D:\tmp\FakeProject) -> Next 5.2. Suite Name оставляю FakeProject (подставленный по умолчанию), тыкаемся в плюсик в Midlets in suite (добавляем мидлеты, которые у нас будут в сьюите, в принципе очень часто в сьюите оказывается лишь один мидлет, но можно их держать и несколько. По спецификации можено до 5, но всё зависит от производителей устройств) 5.3. Вводим Midlet name и Midlet class (точно так же как и в WTK, это не означает, что вы должны такой же проект заводить и в WTK, это я просто аналогии провожу ![]() 5.4. Не мудрствуя лукаво я вписал Midlet name: FakeProject, Midlet class: Hello (Press-> Add) 5.5. Clean old build (я предпочитаю это оставлять выставленным, чтобы предыдущий билд вычищался перед новым простроением. Если проект очень большой и какие-то части не изменяются, то на этом можно сильно сэкономить. Но здесь каждый решает сам, что ему выбирать) 5.6. Deploy Path - выбираем local, и выбиаем папку, в которую будем деплоить. Я заметил ошибки, если выбирать в качесте папки для деплоинга BIN, так что советую выбирать DIST. Но возможно это у меня лишь была такая ошибка. (в общем, я меняю bin на dist, в качестве Deploy path (Press -> Finish) 5.7. Попадем в окошко J2ME Support, там жмём OK (если что-то нужно менять, меняем и жмём ОК ![]() 6. Получили скелет МИДЛЕТА,
7. Если нужно использовать какие-то специфические библиотеки (например JSR-75), это нужно будет подключить самостоятельно в Libraries нашего проекта. 8. Пишим код, или тырим его где нить, вставляем всё что нужно куда нужно, и получаем готовый исходник (готовый к компиляции)
9. Выбираем Build (в верхнем меню), выбираем Generate Ant Build 10. получаем build.xm файлик для нашего проекта. Далее выбираем вкладочку AndBuild (она находится там же где и J2ME Support (правая граница экрана). Там жмём на плюсик и выбираем наш созданный build.xml для проекта FakeProject. (этот файлик будет сохранён в корне проекта) 11. выбираем task dist (жмём на него пару раз мышой, получаем компиляцию нашего проекта) 12. После успешной компиляции в папке dist нашего проекта будет находится FakeProject.jad и FakeProject.jar 13. Открываем J2ME Support (вкладка, рядом с AntBuild рядом с правой границей экрана, ну или правой границей окна IDEA) 14. выбираем телефон, на котором будем пускать наше приложение (Default Gray Phone, Default Color Phone и т.д.) 15. Жмёт на кнопочку Play (ну или как её обозвать не знаю, зелёный треугольничек) или же Ctrl+Alt+R 16. Ещё раз жмём в выскачившем окошке Run. И наслаждаемся нашим приложением. Для того чтобы делать Debug: 1. Делаем всё что было описано ранее, то есть все действия, которые нам позволят запустить приложение в эмуляторе из-под IDEA. 2. Выбираем Run (пункт из меню ), в нём выбираем EditConfigurations 3. Выбираем вкладку Remote в окошке Run/Debug configurations 4. Жмём на плюсик, то есть добавляем Remote сервер (ну, назовём его так) 5. В прниципе, можно здесь ещё кое-чего поконфигурить, но сейчас можно всё оставить по умолчанию, в том числе и имя (Unnamed). Жмём -> OK 6. Ставим где нибудь в тексте точку останова (я вот ткнул в линию, где mainForm.setCommandListener(this); из текста приведённого выше) 7. Далее в J2ME Support (откуда ранее запускали приложение) жмём на "жучка", то есть запускамся в Debug mode. 8. Далее Shift+F9, или же жмём на "жучка с кнопкой Play" который располагается рядом с гаечным ключом на панеле инструментов. 9. Жмём на кнопку Debug (наш, с позволения сказать сервер, Unnamed должен быть выбран в этом качестве, друго пока мы не делали ![]() 10. Далее идём к нашему запустившемуся эмулятору телефона. 11. Нажимаем на кнопку Launch (то есть запускаем наше приложение). 12. УРА!!!! Срабатывает точка останова, мы попадаем в IDEA, и можем дебажить на код. Смотреть во что выставленны переменные и т.д. На этом я пожалуй закончу ( что нужно править в build.xml отпишу как-нить в другой раз. Сейчас нет времени, сорри.) Это сообщение отредактировал(а) Dancer - 3.10.2006, 11:51 -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
||||
|
|||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: нет Всего: 40 |
Здравствуйте, уважаемый Dancer, я являюсь счастливым обладаетелем IDEA 5.1
но не нашел указанного вами файла j2mesupport.jar. По логике я подумал что это может быть j2meplugin, но в нем нет ни папки org, ни файла FileSize. ![]() Добавлено @ 10:57 Slavca, спасибо, конечно, работает, но все же хотелось бы через идею все это прокручивать |
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
В идее 5.0 уже плагин не нужен.
И она преверифает нормально кстати. Правда я в нее ант+антенна все-таки вставил благодаря Dancer'у ![]() -------------------- iOS developer |
|||
|
||||
Dancer |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
Такс, как и обещал - продолжаю.
Значить, ранее получили мы с вами build.xml используем его и нам от этого СЧАСТЬЕ! Но пришлось нам например определённый jar добавить к нашему проекту (пусть это будет JSR-75, то есть хотим использовать файловую систему телефона) Заходим в build.xml отыскиваем
и меняем его на
Очень рекомендую здесь прописывать самим те JAR-ы которые вы используете у себя в проекте. Если нужны буду какие-то другие специфические API и они у вас не будут находится в WTK_ROOT/lib то нжуно будет добавить ещё одну секцию (ниже приведено, для примера)
Если посмотреть в корневую папку проекта, где вы его сохранили, то там вы обнаружите три очень замечательных файлика ![]() midlet.properties В этом файлике вы устанавливаете все переменные, в те значения в которые нужно (ну, автоматически они конечно установятся на стадии когда вы вызываете в IDEA плагин J2MESupport и включаете его), но иногда нужно же что-то поменять, и т.д. Так вот, в этом файлике прописываются все необходимые значения. Версия вашего мидлет, его имя, названия классов для запуска мидлетов, название сьюита. Пути к библиотекам, которые вы будите подключать в build.xml. версии CLDC и MIDP для вашего мидлета. и много чего ещё. Советую вам его открыть в редакторе (хотябы Notepad) и посмотреть самим. Там всё очень понятно. Вот покажу лишь один пример: переменная toolkit.home.dir=C\:\\my\\WTK_22 это означает, что WTK у меня расположено по пути C:\my\WTK_22. Значение этой переменной вы используете в своём build.xml файле (к примеру: <fileset dir="${toolkit.home.dir}/lib">). Если вы поставите другой WTK или симулятор от производителя, вам лишь нужно будет поменять путь для toolkit.home.dir и будет вам счастье (если же симулятор от производителся будет иметь структуру подобную WTK. Хотя как правило производители придерживаются данной структуры. ) Заострю ваше внимание на \: и \\ - это ВАЖНО!!!. символ \ - это показывает парсеру, что за ним идёт специальный символ, и его никак не нужно обрабатывать. (посмотрите про escape-последовательности и всё думаю будет понятно) Manifest.tmpl Это файл шаблон для вашего Manifest.mf файла, который будет располагаться в JAR META-INF/Manifest.mf. (это файл необходим для всех мидлетов, и вообще для всех JAR-архивов. Хотя конечно архив - как архив он может жить и без него, но для всего остального он просто необходим. Не буду на этом останавливаться, о Manifest можно почитать в соответствующей литературе ![]() Если взглянуть на этот файлик (открыть на просмотр или редактирование) мы видим что продолжаем использовать переменные, которые мы выставили в midlet.properties. Для примера, рассмотрим MicroEdition-Configuration. Это обязательный параметр для всех мидлетов, и этот параметр должен присутствовать и в JAD и JAR (читаем спецификацию JSR-118), и мало того, в JAD и JAR этот параметр должен совпадать. Для того чтобы нам не налажаться с версией используем переменную j2me.cldc.version которая у нас выставляется в файле midlet.properties. (У меня она выставлена так: j2me.cldc.version=CLDC-1.0). Так вот, а используете вы это в файле Manifest.tmpl как @j2me.cldc.version@ и уже в файле Manifest.mf у вас появится MicroEdition-Configuration: CLDC-1.0 Ну и так далее. А когда нужно будет поменять версию, вы это легко сделаете в вашем midlet.properties и пересобирёте ваш мидлет. jad.tmpl Это то же файл-шаблон, но уже для JAD файла вашего мидлета. Сюда так же вы может добавлять собственные переменные, как и в обычный JAD файл (это и для JAR справедливо). В нём тот же принцип поведения с переменными, которые устанавливаются в midlet.properties как и для Manifest.tmpl ---------------------------------- Имеются ещё два XML файлика, про которые стоит упомянуть. YOUR_PROJECT_NAME.xml module_YOUR_PROJECT_NAME.xml где YOUR_PROJECT_NAME - это имя вашего проекта (как помните, я ранее создавал проект с именем FakeProject, поэтому у меня эти фалйики соответственно обзываются fakeproject.xml и module_fakeproject.xml) fakeproject.xml - в нём содержится информация по вашему проекту, где располагается Java SDK, какие либы(библиотеки) вы подключили к своему проекту, ни и всё в этом роде. Главное отсюда - это JDK. module_fakeproject.xml - это настройки непосредственно по модулу J2ME Support. Где располагается WTK, какие cldcapi и midpapi вы используете по умолчанию, в каких папках у вас будут находится исходники, куда будут складываться классы и где будет выкладываться JAD/JAR. Здесь стоит остановиться поподробнее. У меня не получилось нормально сконфигуряться (ещё ни разу, но возможно это я такой балбес и руки у меня кривые) из самой IDEA, то есть повыставлять галочек, выбрать что хочу и вуаЛя. (особенно это касается midpapi20.jar и cldcapi10.jar). То есть, выставляю я их в то что мне нужно. а потом обратно открываю этот модуль и получаю, что cldc у меня убежало в 1.1). Но в общем то это..... фигня, когда на эмуляторе, но когда начинаешь заливать в телефон будут проблемы (многие думаю знают, кто не знает - узнает позже ![]() Ну вот, вроде бы про видимые подводные камни рассказал. Как с этим бороться то же, попытался "донести". Как дебажить начать в IDEA вроде бы то же объяснил. (если нет, то задавайте вопросы в этой ветке, по мере возможности буду отвечать) За сим, разрешите откланяться ![]() P.S. Если найдёте какие-то неточности во всей этой лабуде, что-то будет не так работать как написано, плиз пишите сюда, чтобы МЫ все вместе исправляли эти "затыки" и пополняли свой "багаж знаний" Это сообщение отредактировал(а) Dancer - 5.10.2006, 11:56 -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
||||||
|
|||||||
mamon4ik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 18.9.2006 Репутация: нет Всего: нет |
Как заставить IDEA нормально преверифицировать код ?
при сборке через ant на верификации валится с ошибкой - не может найти jar.exe если скопировать его из jsdk в папку проекта, то всё нормально собирается, но копировать jar.exe в каждый проект - это неправильно... как я понял, надо jar.exe куда-то прописать, чтобы при вызове он брался из папки с jsdk а не из текущей папки, но как это сделать ? |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
смотрим в сторону переменных PATH и CLASSPATH
В PATH нужно прописать путь до JAVA_HOME Посмотри статью в нашем факе (ветка J2ME), я уже эту тему затрагивал (IDEA здесь не причём ![]() Вопрос с преверифаером был не так давно в этом форуме задан "Полосатым", я на него отвечал, там он как раз его не использовал, я ему как мог, помог втянуть это дело в Ant-скрипт. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
mamon4ik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 18.9.2006 Репутация: нет Всего: нет |
Наверное, некорректно вопрос задал. Извиняюсь.
то, что jar.exe надо прописывать в PATH узнал из документации к WTK. Прочитав статью в FAQ, понял, что не хватает мне этого - set PATH=%PATH%;%WTK%\bin;%JAVA_HOME%\bin Но я не знаю, как его прописать, и где (в build.xml или где-то еще) ![]() Спасибо. |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
ну, добавь в скрипт, который у тебя Ant пускает. Ant - это ни что иное, как скприпт (bat-файл)
Заходишь в ANT_HOME директорию, открываешь на редактирование ant.bat и добавляешь необходимые строчки (можно практически в самое начало) Ну, или в глобальные виндузовые настройки это дело вносишь. Start->ControlPanel->System(или SystemProperties, ещё это можно получишь правым кликом на значке Мой компьютер, Properties/Свойства) Далее выбираем Advanced->Environment Variables. Меняем PATH для конкретного пользователя или же для всех ну и так далее. Кстати, как и где это всё прописывать кто-то из корефеев уже в факе описывал, но не в J2ME ветке. Отсюда вывод ![]() -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
DissDoc |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Не знаю, может я и не прав, но у автора в коде есть функция main - которая в J2ME недопустима
![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: нет Всего: 40 |
![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |