IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java ME Discussion :

Problème de parser SAX après déploiement


Sujet :

Java ME

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut Problème de parser SAX après déploiement
    Bonjour à tous,

    Dans ma MIDlet j'utilise un parser SAX pour lire un (assez) gros fichier XML. Tout va bien dans l'émulateur de Sun, mais une fois arrivé sur mon téléphone, j'ai un NoClassDefFoundError : javax/xml/parsers/FactoryConfigurationError.

    Cette classe semble faire partie de la JSR 172, c'est à dire la Java ME Web Services Specification. Comment faire pour l'inclure dans mon jar lors du packaging ?

    Merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    euh
    help ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    Citation Envoyé par guenievre Voir le message
    Cette classe semble faire partie de la JSR 172, c'est à dire la Java ME Web Services Specification. Comment faire pour l'inclure dans mon jar lors du packaging ?

    Merci.
    euhh tu as pu faire ca? je croyais que si ton device ne support pas la JSR tu ne pourras pas l ajouter comme ca, sinon tout les device supporteront toute les JSR.
    Je crois que tout les company de tel, creer leur propre API et apres en dessus de ca ils implementent les JSR.
    peut etre que je me trompe, mais je voudrais bien avoir plus d info sur comment tu as fait?

    Cheers,

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par jhaythem Voir le message
    euhh tu as pu faire ca? je croyais que si ton device ne support pas la JSR tu ne pourras pas l ajouter comme ca, sinon tout les device supporteront toute les JSR.
    Je crois que tout les company de tel, creer leur propre API et apres en dessus de ca ils implementent les JSR.
    peut etre que je me trompe, mais je voudrais bien avoir plus d info sur comment tu as fait?

    Cheers,
    Ben justement, je n'y suis pas arrivé -_-
    Que veux-tu savoir précisément ? Si c'est du code, je peux te mettre un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    ...
     
    	public static Map charge(final String pNomFichierMap) {
    		MapHandler mapHandler = new MapHandler();
    		try {
    			// On utilise SAX pour parser cette map (car sinon avec DOM =>
    			// OutOfMemoryError)
    			SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
    			saxParser.parse(Fichier.ouvreInputStream(pNomFichierMap), mapHandler);
    		} catch (FactoryConfigurationError e) {
    			e.printStackTrace();
    		} catch (ParserConfigurationException e) {
    			e.printStackTrace();
    		} catch (SAXException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		return map;
    	}
    Quant au MapHandler, c'est une simple classe fille du DefaultHandler. QUand j'exécute ce code dans l'émulateur, ça marche très bien.

    Je me suis apperçu d'un truc : si tu utilise ktoolbar (du WTK) pour packager le projet, tu peux choisir, dans Settings, d'inclure des API additionnelles, dont la JSR172.

    En ce qui me concerne, j'utilise EclipseME pour packager, et je voudrais éviter d'utiliser ktoolbar.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Bon j'ai peut-être trouvé la solution avec EclipseME. Il faut ajouter le jar nommé j2me-ws.jar au projet, comme indiqué ici :
    http://eclipseme.org/docs/advJarFiles.html

    Je suis en train de tester mais j'ai des soucis avec mon téléphone un peu merdique. Je vous fait un retour tout à l'heure.

    Edit : le jar en question se trouve dans le repertoire d'install de WTK.

    Edit 2 : Avec WTK 2.5.1, il faut aussi j2me-xmlrpc.jar. Le contenu de j2me-ws.jar a changé.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Bon ça a effectivement resolu le probleme mais maintenant j'ai un nullPointerException (alors que je ne l'ai pas dans l'emulateur)

    C'est la loose

  7. #7
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    en fait ce que je voulais dire, c est que par exemple ds le cas des Blackberry c est un java device assez mature, donc meme avant les JSR il contient deja en APPI interne ces specification et les JSR sont ajoute en dessus des API internes. donc c est pour ca qui me semble que pour un blackberry tu pourras pas installer des jar comme ca ( ou bien sauf si jar lib utilisent des JSR deja existants dans le device). mais je crois pour d autre device tu n auras pas ce probleme parcequ ils ont deja construit leur bibliootheque en dessus ds JSR.

    J espere que tu a s compris ce que je voulais dire, dans tout les cas bonne continuation et fais nous part de tes progress....

    Cheers,

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    En fait le jar j2me-ws.jar, qui implémente la JSR172, est inclut directement par EclipseME dans mon jar final, au moment du packaging. Donc normalement, c'est indépendant de ce qui est déjà installé sur la machine cible.

    En attendant j'ai toujours mon NullPointerException, qui n'arrive que sur le téléphone et pas sur les emulateurs (même l'émulateur Nokia ne plante pas). Vous ne savez pas comment je pourrais débugger ça ? Je me sens un peu coinçé là.

  9. #9
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    desole, je ne sais pas comment debugueur ca sur d autre machine que les blackberrys.... au fait les blackberry ils te permettent de debugger ton code avec le device attache, donc tu fais des step into et des watch dans la jvm du device, perso ma connaissance de autres plateformes est limite "mais je me soigne"....

  10. #10
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Points : 317
    Points
    317
    Par défaut
    ecoute essaye de poster sur javaranch.com aussi, tu toucheras pus de gens si tu as besoin d aide envoie des MP.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Oui merci je vais essayer.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 60
    Points
    60
    Par défaut
    Bon le problème venait bien de ce satané parser. J'ai fini par lâcher l'affaire et à me bricoler un parser maison. Il est pas très optimisé, mais au moins il marche.

    Par contre comment on fait pour connaître la ram dispo sur un Nokia 6020 ?

  13. #13
    Membre habitué Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Points : 159
    Points
    159
    Par défaut
    tu peux utiliser le parser KXML qui est un "pull parser" au lieu de bricoler ton parser maison . le KXML est optimisé pour s'executer dans l'environement ME
    et ne consomme pas de la RAM par contre le sax garde en mémoire la copie de tout le fichier xml

  14. #14
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par badoress Voir le message
    par contre le sax garde en mémoire la copie de tout le fichier xml
    Ah bon ? Je croyais que l'intérêt de SAX justement, outre le fait qu'il soit événementiel, c'était d'éviter à avoir à tout charger en mémoire (comme pour DOM).

  15. #15
    Membre habitué Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Points : 159
    Points
    159
    Par défaut
    Pardon, le SAX ne garde pas une copie en mémoire comme le DOM mais il lit le document en entier ce qui peux générer un pb pour la RAM dans le developpement ME.
    par contre le KXML lit un peu d'un document et l'application conduit le parser en demandant à plusieurs reprises le prochain morceau.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] problème exécution avec silverlight après déploiement
    Par zakotcha dans le forum Silverlight
    Réponses: 0
    Dernier message: 27/02/2015, 16h48
  2. [XML] Problème avec le parser SAX
    Par carmensam dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/08/2009, 16h50
  3. Problème de lien après déploiement
    Par Iruddy dans le forum SharePoint
    Réponses: 6
    Dernier message: 09/04/2009, 11h52
  4. [SAX] Problème Parser SAX - UTF-8
    Par Bogs dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 01/12/2008, 02h51
  5. Problème de connection SQL après déploiement sur IIS
    Par Beaveroli dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 24/05/2007, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo