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

Format d'échange (XML, JSON...) Java Discussion :

Erreur de parsing XML avec SAX


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut Erreur de parsing XML avec SAX
    Bonjour tout le monde!
    J'ai crée un programme qui parse un fichier XML.
    Je développe avec eclipse 3.0.2 et mon avec jdk-1.4.2_09.
    Quand je fais tourner mon programme avec eclipse...ça roule!
    Ensuite je crée un jar (avec fat_jar) et quand j'éxécute mon jar dans un terminal j'ai l'erreur suivante:
    java.lang.ClassFormatError: org/apache/xerces/impl/XMLDTDScannerImpl (Illegal constant pool index)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
    at java.lang.Class.getConstructor0(Class.java:1930)
    at java.lang.Class.newInstance0(Class.java:278)
    at java.lang.Class.newInstance(Class.java:261)
    at org.apache.xerces.parsers.ObjectFactory.newInstance(Unknown Source)
    at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
    at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
    at java.lang.Class.newInstance0(Class.java:308)
    at java.lang.Class.newInstance(Class.java:261)
    at org.xml.sax.helpers.NewInstance.newInstance(NewInstance.java:44)
    at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:119)
    at com.pkgChTestCorpus.ChTestCorpus_Action.compareCallisto(ChTestCorpus_Action.java:749)
    at com.pkgChTestCorpus.ChTestCorpusMain.modeTotalCorpus(ChTestCorpusMain.java:2136)
    at com.pkgChTestCorpus.ChTestCorpusMain.longTraitement(ChTestCorpusMain.java:1302)
    at com.rd.pkgChTestCorpus.ChTestCorpusMain.run(ChTestCorpusMain.java:1265)
    at java.lang.Thread.run(Thread.java:534)
    Voici le code incriminé:
    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
    try {		         
    			XMLReader saxReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
    			//XMLReader saxReader = XMLReaderFactory.createXMLReader();  //fonctionne pas...
    		        saxReader.setContentHandler(new ParserXML());
    		        saxReader.parse(fResComparaison.toString());
    			}
    			catch(SAXException se) {
    		        System.out.println("Erreur de parsing");
    		        se.printStackTrace();
    		    }
    		    catch(IOException ioe) {
    		        System.out.println("Erreur d'entrée-sortie");
    		        ioe.printStackTrace();
    		    }
    		    catch(ClassFormatError cfe) {
    		    	System.out.println("Erreur de formatage de classe");
    		        cfe.printStackTrace();
    		    }
    		    catch(Exception e) {
    		    	System.out.println("Autre erreur ...");
    		    	e.printStackTrace();
    		    }
    Aprés avoir regardé dans la faq et dans différent post du forum je n'arrive pas à résoudre ce problème... et commence à désespérer un peu...
    Help please!!
    Merci d'avance pour vos réponse
    Philobedo

  2. #2
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    Personne ne peut m'aider ?
    Tout le monde est en vacances ...?!

  3. #3
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    bon alors j'ai changé la façon de faire.
    J'instancie un SAXParserFactory de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SAXParserFactory fabrique = SAXParserFactory.newInstance();
    SAXParser parseur = fabrique.newSAXParser();
    File fichier = new File(fResComparaison.toString());
    DefaultHandler gestionnaire = new ParserXML();
    parseur.parse(fichier, gestionnaire);
    Lorsque j'éxécute mon jar j'ai l'erreur suivante:
    javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
    at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:93)
    at com.pkgChTestCorpus.ChTestCorpus_Action.compareCallisto(ChTestCorpus_Action.java:754)
    at com.pkgChTestCorpus.ChTestCorpusMain.modeTotalPhrase(ChTestCorpusMain.java:2173)
    at com.pkgChTestCorpus.ChTestCorpusMain.longTraitement(ChTestCorpusMain.java:1306)
    at com.pkgChTestCorpus.ChTestCorpusMain.run(ChTestCorpusMain.java:1265)
    at java.lang.Thread.run(Thread.java:534)
    Je ne comprends d'où ça peut venir,
    Merci de m'aider...
    Philobedo

  4. #4
    Membre habitué Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Points : 156
    Points
    156
    Par défaut
    Pas sûr que ça va beaucoup t'aider, mais voici deux pistes :
    - Vérifier que le classpath lorsque tu lances ton jar (ligne de commande ou manifest) est le même que celui défini dans ton projet eclipse.
    - Vérifier que eclipse utilise le même jdk/jre que celui que tu utilises lorsque tu lances ton jar en mode console. Pour cela, tu peux taper

  5. #5
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    As tu essayé de faire tourner ton appli avant de la "Jarrer" ie. en utilisant que les .class ?

  6. #6
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    Pour Xavinou:
    Quand je fais java -version:
    java version "1.4.2_09"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-b05)
    Java HotSpot(TM) Client VM (build 1.4.2_09-b05, mixed mode)
    et sous Eclipse:
    jdk-1.4.2_09
    /usr/lib/jdk-1.4.2_09
    donc le même...
    Idem pour le CLASSPATH, c'est le même que le manifest ou que celui que j'utilise avec java -classpath monAplli ...

    Pour sozie9372:
    Quand je compile mon aplli avec
    java -classpath Lib/jena/jena.jar:Lib/jena/...(tte mes libs) -Djava.lirbary.path=. Main
    ça fonctionne trés bien aussi ...
    Il n'y a qu'avec le jar que j'ai ce comportement bizarre...

  7. #7
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Alors ca doit venir de fat_jar
    Car en fait : il décompresse les libs pour ne faire qu'un seul jar au final, et dans certains cas, cela pose problème...

    essaye de faire un jar normal pour voir (avec eclipse par exemple)

  8. #8
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    En fait c'est justement parce que je n'arrive pas à créer mon jar avec Eclipse que je le fais avec fat_jar...
    J'ai plein de jar en plus de mon appli, ainsi que des libs externe et apparemment Eclipse ne peut pas regrouper touts les jar dans un seul jar. Pour cela il faudrait que je décompresse tous les jar pour avoir toutes les class puis exporter mon projet en jar avec Eclipse....

  9. #9
    Membre du Club Avatar de philobedo
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    En plus dans mon jar j'ai quelques librairie dynamique (des points so, qui sont en fait du code C++ "swiggé" en .so...) mais qui sont bien intégré dans mon jar avec fat_jar mais pas avec Eclipse...

Discussions similaires

  1. Parsing xml avec SAX
    Par autumn0 dans le forum Android
    Réponses: 13
    Dernier message: 18/04/2012, 17h59
  2. Exemple de parsing XML avec SAX
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 19h47
  3. [SAX] Parsing xml avec sax
    Par flora806 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 18/06/2009, 18h20
  4. [JDOM] Parse XML avec SAX et chemin relatif
    Par logan449 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 03/12/2008, 15h53
  5. [SAX] Recuperer le resultat d"un parsing XML avec SAX
    Par chouxe dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/12/2006, 16h48

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