[j2me] applicatie aan de praat krijgen.

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
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:

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 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
ANTIC is gewoon een crap tool.

Ik ben geswitched naar Antenna en geen problemen meer. Hier staat nog een tutorial (voor het betere copy en paste werk).

Verwijderd

Voor welk device ontwikkel je eigenlijk?

Ik wilde ook wel aan J2ME beginnen, gewoon voor de grap eigenlijk. Mijn telefoon ondersteunt Java, maar helaas zit er een beveiliging op zodat ik niet daadwerkelijk Java bestanden er heen kan sturen. (Panasonic X60)

Zit nu even te kijken wat het leukste apparaatje is om wat met J2ME te spelen. Mischien de P800? Die zie je steeds vaker voor rond de 175,-

Verwijderd

Ik heb zelf een SonyEricsson T610 en dat is mijn eerste aanvaring met J2ME geweest. Net als Alarmnummer wilde ik een 'hello world' maken maar dat lukte me niet echt en er is dit uitgekomen: :P

Afbeeldingslocatie: http://www.qixis.com/graphics/screen.jpg

Als IDE gebruik ik trouwens SunOne Studio 4 Mobile Edition. Werkt ansich wel redelijk maar is een hele cultuurschok als je van iets als Microsoft Visual Studio af komt (eigenlijk is dat SunOne Studio per definitie wel een schok).

Oh... mocht je exit16 versie 0.91 willen downloaden dan kan dat op www.qixis.com (XHTML, werkt ook vanaf de meeste telefoons wel). Afhankelijk van je telefoon moet je dan de JAD of de JAR file direct downloaden. Source beschikbaar op aanvraag.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op 24 juni 2004 @ 23:46:
Voor welk device ontwikkel je eigenlijk?
Voor de wat modernere pda`s. Niet zozeer een specifiek model.

Verwijderd

Ben je niet bang dat J2ME je gaat beperken qua functionaliteit? Misschien is mijn telefoon een slecht voorbeeld, maar ik vond de aangeboden functionaliteit (MIDP 1.0) niet heel erg indrukwekkend. Op de P900 is MIDP 2.0 wel een stuk beter, maar nog steeds open voor verbeteringen... Ik vergelijk dan hierbij met het .NET portable framework wat ik ken van de PocketPC en wat een heel stuk meer mogelijkheden biedt en een (naar mijn idee) minder obscuur programmeermodel.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op 24 juni 2004 @ 23:53:
Ik heb zelf een SonyEricsson T610 en dat is mijn eerste aanvaring met J2ME geweest. Net als Alarmnummer wilde ik een 'hello world' maken maar dat lukte me niet echt en er is dit uitgekomen: :P
Ziet er strak uit :)
Als IDE gebruik ik trouwens SunOne Studio 4 Mobile Edition. Werkt ansich wel redelijk maar is een hele cultuurschok als je van iets als Microsoft Visual Studio af komt (eigenlijk is dat SunOne Studio per definitie wel een schok).
Ik gebruik fijn Intellij IDEA en hoef die k*t omgevingen van Sun niet. Netbeans is bv ook zo`n walgelijk gedrocht.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op 25 juni 2004 @ 09:15:
Ben je niet bang dat J2ME je gaat beperken qua functionaliteit?
Het was de eis :) En verder vind ik het wel meevallen hoor (j2me). Je gaat misschien 50 jaar terug in de tijd met java, maar het is nog wel werkbaar.

  • LAN
  • Registratie: Oktober 2000
  • Niet online

LAN

Is je probleem ondertussen opgelost?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
LAN schreef op 25 juni 2004 @ 16:41:
Is je probleem ondertussen opgelost?
Yep.. Naar ANTENNA overgegaan, en ik ben intussen al zover dat andere mij op kunnen blazen


Afbeeldingslocatie: http://www.alarmnummer.net/sh2.png

Afbeeldingslocatie: http://www.alarmnummer.net/sh.png

[ Voor 10% gewijzigd door Alarmnummer op 25-06-2004 17:37 ]


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Aaah, ineens wordt het me allemaal duidelijk :0
Die blauwe background valt trouwens ook wel mee ;)

Waarom gebruik je trouwens Antenna? De WTK van Sun niet goed?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
-FoX- schreef op 25 juni 2004 @ 17:34:
Aaah, ineens wordt het me allemaal duidelijk :0
Die blauwe background valt trouwens ook wel mee ;)

Waarom gebruik je trouwens Antenna? De WTK van Sun niet goed?
ANTENNA is alleen een ANT task :) Het stuurt fijn de WTK van sun aan.
Pagina: 1