Frage

Ich habe ein MIDlet geschrieben, dass mehrere „fortgeschrittene“ Dinge tut. Fetching Bilder aus dem Internet, Skalieren sie, so dass sie auf dem Handy zu speichern, deren Anzeige

Das alles funktioniert perfekt in dem Nokia S60 3rd Edition FP1-Emulator. Dieses Gerät verfügt über MIDP 2.0 und CLDC 1.1-Unterstützung (auch JSR75, die ich brauche, um Dateien zu speichern). Es funktioniert auch, wie es sollte auf dem Nokia E71 (physikalisches Gerät).

Ich habe dann versucht, das MIDlet auf mehrere andere Emulatoren zu laufen. Einer von ihnen, der DefaultCldcJtwiPhone2 aus dem Java ME SDK 3.0, behauptet auch, MIDP 2.0 und CLDC 1.1-Unterstützung. Es muss nicht JSR75, was erklärt, warum „Fileconnection kann nicht auf eine Art gelöst werden“.

Dies gilt jedoch nicht erklären, warum List.deleteAll (), String.equalsIgnoreCase (String) und einige andere sind nicht definiert.

Die tatsächlichen Fehler, die ich bekommen:

  • Verfahren ceil (double) wird für den Typ undefiniert Math
  • Die Methode deleteAll () für die Typ-Liste nicht definiert
  • Verfahren equalsIgnoreCase (String) ist nicht definiert für den Typ String
  • Verfahren getWidth () ist nicht definiert für den Typ Anzeigbare

Wenn ich mir die MIDP 2.0 (dh JSR118) API ( http: / /java.sun.com/javame/reference/apis/jsr118/ ), kann ich klar alle diese Verfahren sehen vorliegt, mit dem „da“ Tag entweder MIDP 2.0 oder CLDC 1.1.

Mein Frage : warum nicht ein Emulator mit MIDP 2.0 Unterstützung Zugriff auf alle MIDP 2.0 Methoden haben? Oder alternativ, was mache ich falsch?

War es hilfreich?

Lösung

Klingt wie Sie Methoden in CLDC 1.1 definiert verwenden; die Emulator Sie 1.0 CLDC nur unterstützen verwenden müssen (dies würde den Mangel an equalsIgnoreCase() und etwas double und float Primitiven die sicherlich erklären). Die gesamte API hier . Und finden Sie unter hier für eine Liste der Unterschiede zwischen 1.0 und 1.1.

EDIT: Einige Möglichkeiten, die CLDC-Version Ihres Geräts zu überprüfen:

1) Überprüfen Sie die microedition.configuration Systemeigenschaft, wie hier .

System.out.println("The CLDC version is:  " + System.getProperty("microedition.configuration"));

2) Überprüfen Sie die Existenz einer Klasse unterstützt nur in 1.1.

try {
    Class.forName("java.lang.ref.WeakReference");
    System.out.println("It's CLDC 1.1");
} catch (ClassNotFoundException e) {
    System.out.println("It's CLDC 1.0");
}

Andere Tipps

Eclipse-Referenzen sowohl cldc_1.0.jar und cldc_1.1.jar (sowie midp_2.0.jar und midp_2.1.jar).

Um es zu beheben: Zum Fenster> Einstellungen> Java ME> Geräte Managment> your-Gerät > Bearbeiten ...> Bibliotheken> cldc_1.0.jar> Entfernen

Weitere Informationen finden Sie hier: http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html

Auch wenn Sie ein Emulator-Gerät gewählt haben, die CLDC-1.1, wie DefaultCldcJtwiPhone2 unterstützt, können Sie es immer noch konfigurieren, dass ein CLDC-1.0 nur Telefon zu emulieren.

Zumindest ist das, was die Projekteigenschaften auf Netbeans aussehen.

habe ich das gleiche Problem heute (11.03.10) nach der Aktualisierung von:  SDK 1.6.0_17 + ee 3.5.1 + Java_ME_platform_SDK_3.0 EA verdunkeln.  zu:  1.6.0_18 SDK + Eclipse ee 3.5.2 + Java_ME_platform_SDK_3.0.

Das Verfahren ceil (double) ist nicht definiert für den Typ Math Das Verfahren Boden (double) ist nicht definiert für den Typ Math Das Verfahren abs (int) in der Art Math ist nicht anwendbar für die Argumente (double) Die Methode sqrt (double) ist nicht definiert für den Typ Math

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top