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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильная верификация классов 
:(
    Опции темы
Aoli
Дата 18.3.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет!
Написал пример из книжки.
Скомпилировал IntelliJ IDEA - все работает прекрасно, т.е. запускается эмулятор DefaultColorPhone и далее программа работает.
Если бы не одно но:
Тот jar, который собрала IDEA содержит неправильный манифест и если запускать его не через idea, то ничего не пашет.
На телефоне - аналогично.

Поэтому, написал ant-таску для генерации jar:
Код

<project name="mobileApp" default="all">
    <property name="midp.bin.dir" value="C:\WTK22\bin"/>
    <property name="midp.lib.dir" value="C:\WTK22\lib"/>
    <property name="midp.lib.midpapi20" value="${midp.lib.dir}/midpapi20.jar"/>
    <property name="midp.lib.cldcapi11" value="${midp.lib.dir}/cldcapi11.jar"/>
    <path id="midp.classes">
        <fileset dir="${midp.lib.dir}">
            <include name="midpapi20.jar"/>
            <include name="cldcapi11.jar"/>
        </fileset>
    </path>

    <property name="src.dir" value="src"/>
    <property name="classes.dir" value="classes"/>
    <property name="preverify.dir" value="preverify"/>
    <property name="file.manifest" value="MANIFEST.txt"/>
    <property name="file.jar" value="console.jar"/>

    <target name="clean.all">
        <delete dir="${classes.dir}"/>
        <delete dir="${preverify.dir}"/>
        <delete file="${file.jar}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}"
               destdir="${classes.dir}"
               bootclasspathref="midp.classes"
               verbose="true"
               debug="off"/>
    </target>

    <target name="preverify">
        <mkdir dir="${preverify.dir}"/>
        <exec executable="${midp.bin.dir}\preverify">
            <arg line="-classpath ${midp.lib.midpapi20};${midp.lib.cldcapi11};${classes.dir}"/>
            <arg line="-d ${preverify.dir} ${classes.dir}"/>
        </exec>
    </target>

    <target name="jarIt">
        <jar basedir="${preverify.dir}" destfile="${file.jar}" manifest="${file.manifest}">
            <fileset dir="">
                <include name="icon.png"/>
            </fileset>
        </jar>
    </target>

    <target name="all" depends="compile, preverify, jarIt">
        <echo>DONE</echo>
    </target>
</project>


Если что, то вот файл манифеста - MANIFEST.txt (срисовал из книжки):
Код

Manifest-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Name: Console
MIDlet-Icon: /icon.png
MIDlet-Vendor: ZT
MIDlet-1: Console, /icon.png, Test
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-2.0


ant отрабатывает нормально, но вот при запуске вот то, что выдает эмулятор:
Код

Running with storage root DefaultColorPhone
Method............: 1016db58 'com/sun/midp/midlet/MIDletState.createMIDlet (static)' 
Stack Chunk.......: e6f604
Frame Pointer.....: e6f65c
Current IP........: 101f1715 = 101f1707 + offset 14
Previous Frame....: e6f624
Previous IP.......: 10214d75 (offset 22)
Frame size........: 7 (1 arguments, 6 local variables)
Argument[0].......: e70cb0
Local[1]..........: 0
Local[2]..........: e6f624
Local[3]..........: e88650
Local[4]..........: e6f638
Local[5]..........: 1015a478
Local[6]..........: e6f604
Operand[1]........: e70cb0

Method............: 10184618 'com/sun/midp/midlet/Selector.run (virtual)' 
Stack Chunk.......: e6f604
Frame Pointer.....: e6f624
Current IP........: 10214d75 = 10214d5f + offset 22
Previous Frame....: 0
Previous IP.......: 1
Frame size........: 6 (1 arguments, 5 local variables)
Argument[0].......: e70f08
Local[1]..........: e88810
Local[2]..........: e70cb0
Local[3]..........: 0
Local[4]..........: 0
Local[5]..........: 0
Operand[1]........: e88810

VM status:
Instruction pointer.: 101f1715 (offset within invoking method: 14)
Next instruction....: 0x4c
Frame pointer.......: e6f65c
ALERT: java/lang/ClassFormatError: Bad version information.
Local pointer.......: e6f640
Stack size..........: 128; sp: e6f674; ranges: e6f60c-e6f80c;
Contents of the current stack frame:
    e6f640: e70cb0 (lp)
    e6f644: 0
    e6f648: e6f624
    e6f64c: e88650
    e6f650: e6f638
    e6f654: 1015a478
    e6f658: e6f604
    e6f65c: e6f624 (fp)
    e6f660: 10214d75
    e6f664: e6f63c
    e6f668: 1016db58
    e6f66c: e6f604
    e6f670: 0 (end of frame)
    e6f674: e70cb0 (sp)
Execution stack contains 108 items: 
e70f08  
e88810  
e70cb0  
0  
0  
0  
0  
1  
e6f608  
10184618  
e6f604  
0  
e88810  
e70cb0  
0  
e6f624  
e88650  
e6f638  
1015a478  
e6f604  
e6f624  
10214d75  
e6f63c  
1016db58  
e6f604  
0  
e70cb0  

Execution completed.
751674 bytecodes executed
9 thread switches
741 classes in the system (including system classes)
3889 dynamic objects allocated (110556 bytes)
1 garbage collections (0 bytes collected)
Execution completed.
751674 bytecodes executed
9 thread switches
741 classes in the system (including system classes)
3889 dynamic objects allocated (110556 bytes)
1 garbage collections (0 bytes collected)

На телефоне тоже не работает (
Насколько я понял - баг в верификации классов.
Пробовал запускать не emulator а emulator1.1 - такая-же ерунда.

Кто-нибудь может подсказать, как правильно верифицировать?

Добавлено @ 15:53 
Чуть не забыл:
FAQ и http://forum.vingrad.ru/topic-114550/unrea...258F/index.html уже читал
PM WWW ICQ   Вверх
W0LF
Дата 18.3.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


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

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





--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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