Ik ben nu al een paar uur (inclusief gisteren) bezig met het aan de praat te krijgen van een eigen geschreven 'hello world' voorbeeldje voor het J2ME platform. Ik gebruik ANT voor het build proces omdat ik niet zo nodig een nare ide hoef te hebben waarbij ik totaal geen controle uit kan oefenen en moet leven binnen alle beperkingen.
Ik heb het volgende voorbeeld:
Dit voorbeeld draait uitstekend zo lang ik die t.addCommand(_exitCommand); maar niet gebruik. Dus je zou denken dat het dan goed zou zijn. Op het moment dat ik die regel toevoeg, gaat de hele vm op zijn gat met de melding:
error verifying methode Hello commandAction ......
Ik zou dus echt niet weten wat hier fout aan is.
Verder heeft sun zijn best weer eens gedaan om een simpele techniek weer eens te verhullen in een enorme waas van onduidelijkheid. Thumbs up Sun...
ps:
ik gebruik ANTIC om mijn classes te preverifyen, te jarren en de jad aan te maken:
[edit]
Ik zie trouwens dat ik de commandListener ben vergeten te implementeren op de class, maar dan is het bij de zotte dat de compiler daar niet over struikeld.
Ik heb het volgende voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Hello extends MIDlet{
private Command _exitCommand; // The exit command
private Display _display; // The display for this MIDlet
public Hello(){
_display = Display.getDisplay(this);
_exitCommand = new Command("Exit", Command.SCREEN, 2);
}
public void startApp() {
TextBox t = new TextBox("Hello MIDlet", "Test string", 256, 0);
t.addCommand(_exitCommand); <--------
//t.setCommandListener(this);
_display.setCurrent(t);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if (c == _exitCommand) {
// destroyApp(false);
// notifyDestroyed();
}
}
} |
Dit voorbeeld draait uitstekend zo lang ik die t.addCommand(_exitCommand); maar niet gebruik. Dus je zou denken dat het dan goed zou zijn. Op het moment dat ik die regel toevoeg, gaat de hele vm op zijn gat met de melding:
error verifying methode Hello commandAction ......
Ik zou dus echt niet weten wat hier fout aan is.
Verder heeft sun zijn best weer eens gedaan om een simpele techniek weer eens te verhullen in een enorme waas van onduidelijkheid. Thumbs up Sun...
ps:
ik gebruik ANTIC om mijn classes te preverifyen, te jarren en de jad aan te maken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| <project name="Game" default="run" basedir=".">
<!-- set global properties for this build -->
<property name="src" value="src"/>
<property name="src.game" value="${src}/game"/>
<!-- build verwijst naar alles wat is gecompileerd en weggegooid kan worden -->
<property name="build" value="build"/>
<!-- hierin is de jar + jad terug te vinden -->
<property name="build.dist" value="${build}/dist"/>
<!-- alle preverified classes komen hier in te staan -->
<property name="build.preverified" value="${build}/preverified"/>
<property name="classes" value="${build}/classes"/>
<property name="classes.game" value="${classes}/game"/>
<!-- res verwijst naar alle resources (images, sounds etc) -->
<property name="res" value="res"/>
<!-- todo: deze moet via een property ingesteld worden -->
<property name="midp_home" value="c:/WTK21"/>
<property name="midp_lib" value="${midp_home}/lib/midpapi10.jar"/>
<property name="cldc_lib" value="${midp_home}/lib/cldcapi11.jar"/>
<property name="program_name" value="Hello"/>
<property name="package_name" value="Hello"/>
<taskdef name="antic" classname="uk.co.smartkey.util.anttasks.AnticTask"/>
<target name="clean" description="verwijder alle niet noodzakelijke bestanden">
<delete dir="${build}"/>
<!--
In principe kan de junitreports ook weg, maar mijn windows heeft dir
lock. Dus is erg vervelend om alles iedere keer dicht te doen.
-->
</target>
<target name="init" description="">
<tstamp/>
</target>
<target name="compile.game"
description="Compiles the sources of the Game"
depends="init">
<mkdir dir="${classes.game}"/>
<javac destdir="${classes.game}"
srcdir="${src.game}"
bootclasspath="${midp_lib};${cldc_lib}"
target="1.1"/>
</target>
<target name="build"
depends="compile.game"
description="Builds the JAR and JAD files">
<antic suiteName="Demo Suite"
version="1.0"
vendor="smartkey.co.uk"
profile="MIDP-1.0"
configuration="CLDC-1.0"
jarName="${program_name}.jar"
jadName="${program_name}.jad"
jarURL="file:${program_name}.jar">
<midlet name="First Midlet" classname="Hello"/>
<attribute name="message" value="Hello World!!!"/>
<fileset dir="${classes.game}" includes="**/*"/>
<fileset dir="${res}" includes="**/*"/>
</antic>
</target>
<target name="run"
description="Runs the game on an emulator"
depends="build">
<exec executable="${midp_home}/bin/emulator.exe">
<arg line="-Xdescriptor:${program_name}.jad"/>
</exec>
</target>
</project> |
[edit]
Ik zie trouwens dat ik de commandListener ben vergeten te implementeren op de class, maar dan is het bij de zotte dat de compiler daar niet over struikeld.
[ Voor 17% gewijzigd door Alarmnummer op 24-06-2004 09:00 ]

