# Fehler: Unbehandelte Ausnahme



## jdk6man (23. Mai 2010)

Hi leute,
habe ein Problem dabei ein Hallo Welt Midlet auf meinem N95 zum laufen zu bringen. Es zeigt nach dem Start direkt an "Unbehandelte Ausnahme. Programm schliessen?" . Ich benutze das Java Platform Micro Edition Software Development Kit 3.0 und folgenden Beispielcode:

```
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {
    private Command exitCommand;
    private TextBox tbox;

    public HelloWorld() {
        exitCommand = new Command("Exit", Command.EXIT, 1);
        tbox = new TextBox("Hello world MIDlet", "Hello World!", 25, 0);
        tbox.addCommand(exitCommand);
        tbox.setCommandListener(this);
    }

    protected void startApp() {
        Display.getDisplay(this).setCurrent(tbox);
    }

    protected void pauseApp() {}
    protected void destroyApp(boolean bool) {}

    public void commandAction(Command cmd, Displayable disp) {
        if (cmd == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}
```

Übersetzt und gepackt habe ich das Programm auch nach Anleitung: javac (mit dem parameter bootclasspath), danach preverify und dann mit jar gepackt (inklusive manifest).

Wisst ihr wo der Fehler liegt?

Grüsse
jdk6man


----------



## Chéfkóch (23. Mai 2010)

Hast du du evtl. vergessen das "Start Midlet" zu setzen?


----------



## jdk6man (23. Mai 2010)

Das start-midlet wurde mit folgender Zeile gesetzt:

MIDlet-1: HelloWorld, , HelloWorld


----------



## Chéfkóch (24. Mai 2010)

Ich nehme mal an, dass die Klasse in keinem Package liegt. Sollte eigentlich auch keine Probleme damit geben.
Passen CLDC und MIDP-Version in der Manifest auch zum Gerät?
Ansonsten würde ich jar und jad mal mit der J2ME-Version von NetBeans erstellen. Da sollte es eigentlich keine Probs geben und es ist zudem viel einfacher und bequemer


----------



## jdk6man (24. Mai 2010)

Die CLDC Version von meinem Gerät ist 1.1 und die MIDP 2.0 . Ich habe die Bibliotheken dazugepackt mit der CLDC Version 1.0 und der MIDP Version 2.0 .

Edit: Ich habe nun noch einmal mit der CLDC 1.1 versucht, allerdings auch ohne Erfolg (gleicher Fehler).


----------



## The_S (25. Mai 2010)

Ich sehe jetzt auf den ersten Blick auch keinen Fehler. Aber versuche es doch mal noch minimalistischer:


```
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
public class HelloWorld extends MIDlet {
 
    protected void startApp() {
        Display.getDisplay(this).setCurrent(new Form("Hello World"));
    }
 
    protected void pauseApp() {}
    protected void destroyApp(boolean bool) {}
}
```


----------



## jdk6man (25. Mai 2010)

Das hat leider auch nicht funktioniert (selber Fehler). Ich poste noch die Manifest-Datei und die Befehle die ich zum übersetzen benutze, vielleicht ist dort etwas falsch.

Manifest:

Manifest-Version: 1.0
MIDlet-Version: 1.0
MIDlet-Vendor: Der Name
MIDlet-Name: Hallo Welt
MIDlet-1: HelloWorld, , HelloWorld
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.1
(mit leerzeile)


Folgende Befehle benutze ich zum übersetzen:

javac -bootclasspath C:\JavaME\lib\cldc_1.1.jar;C:\JavaME\lib\midp_2.0.jar HelloWorld.java
preverify -classpath C:\JavaME\lib\cldc_1.1.jar;C:\JavaME\lib\midp_2.0.jar HelloWorld
del HelloWorld.class
copy output\HelloWorld.class HelloWorld.class
jar cfm HelloWorld.jar manifest.txt HelloWorld.class


----------



## The_S (25. Mai 2010)

Lass doch mal von einer IDE übersetzen. Von Hand übersetzen bei Java ME ist sehr unhandlich. Hier ein Artikel dazu, der dieses Thema auch angeht: Java Blog Buch : 21.02 JAR, JAD und Proguard


----------



## jdk6man (25. Mai 2010)

Ja danke das hat geholfen. Nun läuft das Programm  .
Die Sache bei mir und IDEs ist so: Ich benutze ausschließlich Kommandozeile + Notepad, bei allen Sprachen mit denen ich programmiere, also bin ich das so gewohnt 

Danke für eure Hilfe.


----------

