René: Probleme mit Java-Anwendung für's Handy

Beitrag lesen

Hallo,

hat jemand von euch Erfahrungen mit dem Entwickeln von Anwendungen für Handys?
Ich habe nämlich folgendes Problem:
Ich habe mir die j2sdk gezogen und dazu das Package Nokia MIDP SDK.
Nun habe ich eine simple Anwendung geschrieben, die den ASCII-Wert in einen dezimalen Wert bzw. umgekehrt umrechnen soll.
Die Java-Source habe ich problemlos compiliert und anschließend zusammen mit einer Manfiest-Datei in ein jar-Archiv gepackt.
Diese jar-Datei habe ich auf's Handy (Nokia Series 60) geladen und geöffnet. Nach Abschluss der Installation befand sich ein neues Programm-Icon in meinem Menü - bis hierher alles ok.
Wenn ich die Anwendung allerdings starten will, passiert gar nichts mehr. Das Programm öffnet sich nicht und es erscheint auch keine Fehlermeldung. Ich befinde mich einfach wieder im Menüfenster.
Ich nehme mal an, das entweder beim Compilieren oder beim Packen etwas schief gegangen ist - weiß allerdings überhaupt nicht, woran es liegen könnte.
Womit entwickelt ihr javabasierte Handy-Anwendungen? Ist dieses Nokia Series 60 MIDP SDK ok oder sollte man zum Einbinden der grafischen Komponenten etwas anderes benutzen?
Vielleicht liegt das Prob auch im Code.
Ich weiß, es ist jetzt etwas viel, aber ich würde gern den Code posten, damit mir evtl. jemand weiterhelfen kann.

Mit folgenden Befehlen erstelle ich die Anwendung:
javac -classpath C:\Nokia\Devices\Series_60_MIDP_SDK_for_Symbian_OS_v_1_0\lib\Series_60_MIDP_SDK_for_Symbian_OS_v_1_0\j2me-debug.zip Ascii.java
jar cvfm Ascii.jar META-INF/MANIFEST.MF Ascii.class

Quelltext von Ascii.java:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Ascii extends MIDlet implements CommandListener {
  private Display display;
  private Form form;
  private TextField wert;
  private StringItem ergebnis;
  private ChoiceGroup aktion;
  private Command cmdUmrechnen;
  private Command cmdLoeschen;
  private Command cmdSchliessen;

public Ascii() {
    display = Display.getDisplay(this);
    form = new Form("ASCII-Umrechner");
    wert = new TextField("Wert: ", "", 3, TextField.ANY);
    ergebnis = new StringItem("Ergebnis: ", "");
    aktion = new ChoiceGroup("Aktion: ", 0);
    aktion.append("in ASCII", null);
    aktion.append("von ASCII", null);
    cmdUmrechnen = new Command("Umrechnen", Command.SCREEN, 1);
    cmdLoeschen = new Command("Loeschen", Command.SCREEN, 1);
    cmdSchliessen = new Command("Schliessen", Command.EXIT, 1);
    form.append(wert);
    form.append(ergebnis);
    form.append(aktion);
    form.addCommand(cmdUmrechnen);
    form.addCommand(cmdLoeschen);
    form.addCommand(cmdSchliessen);
    form.setCommandListener(this);
  }

public void startApp() throws MIDletStateChangeException {
    display.setCurrent(form);
  }

public void pauseApp() {
  }

public void destroyApp(boolean flag) {
  }

public void commandAction(Command command, Displayable displayable) {
    if (command == cmdUmrechnen) {
      if (!wert.getString().equals("")) {
        if (aktion.getSelectedIndex() == 0)
          ergebnis.setText(Integer.toString((int)wert.getString().charAt(0)));
        if (aktion.getSelectedIndex() == 1)
          ergebnis.setText((char)Integer.parseInt(wert.getString()) + "");
      }
    }
    if (command == cmdLoeschen) {
      wert.setString("");
      ergebnis.setText("");
      aktion.setSelectedIndex(0, true);
    }
    if (command == cmdSchliessen) {
      destroyApp(false);
      notifyDestroyed();
    }
  }
}

Quelltext von MANIFEST.MF:
Manifest-Version: 1.0
MIDlet-Name: Ascii
MIDlet-1: Ascii, , Ascii
MIDlet-Version: 1.0
Created-By: 1.3.1 (Sun Microsystems Inc.)
MIDlet-Vendor: Sun Microsystems
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

Vielen Dank für eure Hilfe!
Grüße, René