![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
Vovan_Danielyan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 4.8.2007 Где: Усть-Лабинск Репутация: 1 Всего: 1 |
Я тут решил собрать приложения для мобильника, не используя никаких IDE, чтобы получше познакомиться с процессом, и наткнулся на одну проблему.
Сперва взял IDE (Sun ONE Studio 4, древняя вещь) создал стандартный MIDletSuite со стандартным мидлетом HelloMIDlet. Собрал, закинул на мобильник - работает. Потом достал исходники этого HelloMIDlet, скомпилировал (все делал в другой директории), скопировал из архива, созданного IDE, файл манифеста. Cархивировал все в ZIP (соблюдая иерархию каталогов), поменял расширение на jar. Кинул на мобильник - но на этот раз мобильник написал "ошибка приложения". Пока пыталься понять в чем дело, заметил, что при одинаковых исходных файлах, размер скомпилированного с помощью IDE класса - 1768 байт, а у меня, после компиляции того же файла, класс весил 1401 Байт. Компилировал я следующей строкой:
Такую же библиотеку (c:\WTK22\lib\midpapi10.jar) я подключал к проекту в IDE, так что все, по идее, должно бы работать. Наверняка IDE еще что-то добавляет в командную строку для компиляции (почему-то же различается размер файлов!), но посмотреть я этого не могу. Может, кто знает как надо правильно скомпилировать файл, чтобы приложение в конце концов заработало? Или вообще, в чем тут дело, почему размеры-то разные получились? |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Для j2me нужно еще делать преверификацию, использую утилиту(ы) из c:\wtk22\bin\preverifyXX
|
|||
|
||||
Vovan_Danielyan |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 4.8.2007 Где: Усть-Лабинск Репутация: 1 Всего: 1 |
Спасибо, этого-то я и не знал. Теперь все заработало.
Только, я пока preverify выполнял, у меня еще вопрос возник. На команду preverify с указанием в classpath только c:\WTK22\lib\midpapi10.jar выдается ошибка
я добавил в аргумент -classpath еще и c:\j2sdk1.4.2_08\lib\ - думал, раз javac обходится без явного указания пути к стандартным библиотекам, то он их по переменной среды находит - однако c preverify это не помогло. Тогда я заглянул в библиотеку cldcapi10.jar из WTK, обнаружил, что есть требуемый класс, указал его в -classpath и все сработало как надо. Переменная среды у меня выглядит так
но по этим адресам никаких стандартных библиотек я не нашел (кроме wtk - но ее я сам потом добавил, все и без нее работало). Откуда берет классы javac и почему preverify (и я тоже) их не видит? И одинаковы ли классы Object в cldacapi и в стандартной библиотеке? Это сообщение отредактировал(а) Vovan_Danielyan - 27.3.2010, 16:09 |
||||
|
|||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
нужно сначала задать JAVA_HOME, WTK_HOME, а потом добавить в CLASSPATH: %JAVA_HOME%/bin, %WTK_HOME%/bin(вроде так, уже если честно не помню, можно в гугле порыть )
и еще я бы посоветовал собирать проект из-под IDE, ну а если IDE совсем уж не нравится есть такая вещь Это сообщение отредактировал(а) W0LF - 31.3.2010, 18:44 -------------------- iOS developer |
|||
|
||||
Окунь |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
Как я сам это понимаю:
Чтобы обработать исходники, javac необходима информация обо всех классах, упоминаемых в них. Для этого и нужен параметр CLASSPATH, который указывает, где искать эту информацию. Но еще до CLASSPATH, он ее ищет среди bootstrap-классов и extension-классов. Бутстрап-классы - это и есть java-платформа. Информация о них хранится в файле rt.jar. Там находится, например, пакет java.lang*. Т.к. мы компилируем для платформы JME, то правильнее было бы в вызове javac добавить опцию "-bootclasspath wtk_home/lib/cldc10.jar". Преверифай же ищет инфу о классах только в classpath. Поэтому требуется явное указание бутстрап-классов. |
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 10 Всего: 28 |
Правильная постановка вопроса от камрада Vovan_Danielyan. А то действительно развелось много кодеров неспособных с командной строки собрать простенький HelloWorld. IDE конечно хорошо, но уметь поработать честным shell'ом тоже надо уметь и не столько ради самого умения, а столько чтобы понимать как устроено нутро.
-------------------- Aut viam inveniam aut faciam |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |