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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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 confirmé 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
    Par défaut
    Personne ne peut m'aider ?
    Tout le monde est en vacances ...?!

  3. #3
    Membre confirmé 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
    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 éprouvé Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    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 émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

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

  6. #6
    Membre confirmé 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
    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...

Discussions similaires

  1. Parsing xml avec SAX
    Par autumn0 dans le forum Android
    Réponses: 13
    Dernier message: 18/04/2012, 16h59
  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, 18h47
  3. [SAX] Parsing xml avec sax
    Par flora806 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 18/06/2009, 17h20
  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, 14h53
  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, 15h48

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