Всем привет! Написал пример из книжки. Скомпилировал 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 уже читал
|