Question

J'ai écrit un MIDlet qui fait plusieurs « avancées » des choses:. Récupérer les images à partir du Web, les redimensionner, les enregistrer sur le téléphone, les afficher

Tout cela fonctionne parfaitement dans l'émulateur Nokia S60 3rd Edition FP1. Cet appareil a MIDP 2.0 et CLDC 1.1 support (également JSR75, que je besoin pour enregistrer des fichiers). Il fonctionne aussi comme il se doit sur le Nokia E71 (appareil physique).

J'ai ensuite essayé d'exécuter le MIDlet sur plusieurs autres émulateurs. L'un d'eux, le DefaultCldcJtwiPhone2 du SDK Java ME 3.0, affirme également MIDP 2.0 et CLDC 1.1 support. Il n'a pas JSR75, ce qui explique pourquoi « FileConnection ne peut être résolu à un type ».

Cela ne veut pas, cependant, expliquer pourquoi List.deleteAll (), String.equalsIgnoreCase (String) et quelques autres ne sont pas définies.

Les erreurs réelles que je reçois:

  • La méthode ceil (double) est définie pour le type Math
  • La méthode deleteAll () est définie pour la liste de type
  • La méthode equalsIgnoreCase (String) est définie pour le type String
  • La méthode getWidth () est définie pour le type affichable

Quand je regarde la MIDP 2.0 (c.-à-JSR118) API ( http: / /java.sun.com/javame/reference/apis/jsr118/ ), je peux clairement voir toutes ces méthodes étant présente, avec le « car » tag étant soit MIDP 2.0 ou CLDC 1.1.

Mon Question : pourquoi ne pas un émulateur avec le soutien MIDP 2.0 ont accès à toutes les méthodes MIDP 2.0? Ou bien, qu'est-ce que je fais mal?

Était-ce utile?

La solution

On dirait que vous utilisez des méthodes définies dans CLDC 1.1; l'émulateur que vous utilisez ne doit soutenir CLDC 1.0 (ce qui expliquerait l'absence de equalsIgnoreCase() et tout ce qui concerne les primitives double et float). Voir l'API complète . Et voir pour une liste des différences entre 1,0 et 1.1.

EDIT: Voici quelques façons de vérifier la version CLDC de votre appareil:

1) Vérifiez la propriété du système microedition.configuration comme décrit ici .

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

2) Vérifier l'existence d'une classe prise en charge que dans 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");
}

Autres conseils

références Eclipse à la fois cldc_1.0.jar et cldc_1.1.jar (ainsi que midp_2.0.jar et midp_2.1.jar).

Pour résoudre ce problème: Aller à la fenêtre> Préférences> Java ME> Périphérique Managment> votre périphérique > Modifier ...> Bibliothèques> cldc_1.0.jar> Supprimer

Plus de détails vous pouvez trouver ici: http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html

Même après avoir choisi un dispositif émulateur qui prend en charge CLDC-1.1, comme DefaultCldcJtwiPhone2, vous pouvez toujours le configurer pour émuler un CLDC-1.0 seul téléphone.

Au moins ce que les propriétés du projet sur Netbeans ressemblent.

Je suis le même problème aujourd'hui (11/03/10) après la mise à jour à partir de:  SDK 1.6.0_17 + éclipse ee 3.5.1 + Java_ME_platform_SDK_3.0 EA.  à:  SDK 1.6.0_18 + éclipse ee + Java_ME_platform_SDK_3.0 3.5.2.

La méthode ceil (double) est définie pour le type Math Le rez-de-méthode (double) est définie pour le type Math La méthode abs (int) dans le type Math est pas applicable pour les arguments (double) La méthode sqrt (double) est définie pour le type Math

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top