Java ME application fonctionne bien dans l'émulateur, mais s'écraser lorsqu'il est déployé à N70. De toute façon d'identifier la raison de se briser?

StackOverflow https://stackoverflow.com/questions/2776347

  •  03-10-2019
  •  | 
  •  

Question

J'ai développé une application Java ME pour la plate-forme CLDC. Il fonctionne très bien lorsqu'il est exécuté dans un émulateur. Mais quand je le déployer sur mon téléphone N70 l'application ne démarre pas du tout dans le téléphone. Dans ma demande il y a quelques 14 classes, et je crée une instance de chacun et de les mettre dans le vecteur le démarrage de l'application. Les classes ont une seule variable et 2 méthodes. Susciter le nombre de cas peut être la raison de son plantage?

Est-il possible que je peux trouver la raison pour laquelle l'application ne peut pas commencer dans le téléphone?

Mise à jour: Son bien sur l'émulateur en cours d'exécution. Et une autre chose que je voudrais mentionner est that- Le code cesse d'exécuter uniquement au moment où je crée ces 14 cas, et en les ajoutant au vecteur. Jusqu'à ce point, le code est exécuté bien.

Était-ce utile?

La solution

Cela peut dépendre de l'endroit où dans le code que vous créez ces instances. Si vous les créez dans votre constructeur MIDlet ou essayer la méthode startApp déplacer l'initialisation dans la méthode d'exécution de votre application.

Une façon de le débogage des applications J2ME qui ne démarre pas sur le téléphone est en ajoutant des messages de débogage de style « printf » dans votre code à écrire dans le système de stockage d'enregistrement et d'ajouter un autre MIDlet à votre application de lire RMS et affichage ces messages. Ou vous pouvez simplement commenter des morceaux de code et voir si cela fonctionne.

Autres conseils

Vous pouvez déboguer sur l'appareil. Si l'émulateur vous utilisez fait partie du Nokia SDK alors il devrait y avoir des installations ailleurs pour effectuer des tests et le débogage sur l'appareil. (Je posterai plus en détail sur cela, mais je ne l'ai fait avec les téléphones Sony Ericsson a récemment.)

Une autre option consiste à utiliser le

La probabilité que votre application est en fait s'écraser la machine virtuelle Java thread interpréteur de bytecode et se terminant l'ensemble du processus natif est très faible.

Il est arrivé avant, mais vous devez éliminer plusieurs autres problèmes potentiels avant d'être convaincu d'un accident réel.

Il est plus probable que ce soit:

  • Votre MIDlet n'est pas créé ou n'a pas démarré parce que le temps d'exécution MIDP décide qu'il est incorrect.
    ou
  • Votre MIDlet lance simplement une exception que vous ne surprenez pas, ce qui peut faire ressembler il a été brutalement interrompue.

Depuis l'installateur MIDlet est censé vous empêcher d'installer une mauvaise MIDlet, la question de l'exception uncaught est plus probable.

Comment trouver une exception uncaught:

  • Commencez par le plus simple HelloWorld MIDlet, en utilisant un Form de sorte que vous pouvez facilement insérer plus StringItems en haut de l'écran.
  • Créer et lancer une nouvelle Thread dans MIDlet.startApp()
  • Dans votre remplacement de Thread.run(), ajoutez un bloc try{}catch(Throwable){}.
  • Dans ce bloc, faire tout ce que votre MIDlet d'origine.
  • Utilisez le formulaire en tant que votre sortie standard pour le débogage.

Vous pouvez utiliser la journalisation formulaire pour vous assurer de ne pas entrer dans une boucle infinie, pour afficher les classes d'exception et les messages, pour signaler les étapes logiques, pour afficher les valeurs variables ...

C'est la première étape pour déterminer ce qui se passe.

J'ai aussi fait face à un problème similaire et quand je recompilé mon MIDLet comme Midlet 1.0 alors il a bien fonctionné. Il semble que N70 n'est pas en mesure d'exécuter la nouvelle version de MIDLet. Je pense que vous rétrogradez et testez votre midlet.

Cordialement

Junaid

scroll top