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 :

Can't create default XMLReader, is property org.xml.sax.driver set ?


Sujet :

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

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut Can't create default XMLReader, is property org.xml.sax.driver set ?
    Bonjour, cela fait plusieurs fois que je tombe sur cette erreur et je me casse la tête dessus depuis pas mal de temps.
    J'ai vu que je pouvais la contourner en donnant un parser lors de la création du XMLReader du genre "org.apache.xerces.parsers.SAXParser".
    Seul problème, je n'ai pas ce parser ni aucun autre et je ne peux pas le mettre, je veux juste créer un parser par défaut en ne mettant aucun paramètre. Lorsque je fais ca, j'obtiens l'erreur que j'ai mis en titre, à savoir :

    "Can't create default XMLReader, is property org.xml.sax.driver set ?"

    J'ai fais des recherches et personnes ne dit quoi faire exactement, je ne comprends pas ce que ca représente, ce n'est pas une classe, c'est tout ce que je sais.

    Si quelqu'un pouvait m'aider en me disant comment faire pour lui donner ce qu'il demande ou même juste ce que représente org.xml.sax.driver ?

    Voici un peu de mon code, l'instanciation du parser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XMLReader handler = XMLReaderFactory.createXMLReader(); // "org.apache.xerces.parsers.SAXParser"
    handler.setContentHandler(parser);
    handler.parse("xmltest.xml");
    Merci beaucoup.

    Cordialement.

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Peut-on avoir ton code ainsi que les messages d'erreur?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Bonjour, merci de ton aide.

    J'utilise le parser SAX.

    Les import :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLReaderFactory;
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XMLReader handler = XMLReaderFactory.createXMLReader();
    handler.setContentHandler(parser);
    handler.parse("xmltest.xml");
    parser est mon objet qui étend "DefaultHandler"

    et le code d'erreur se situe sur la ligne XMLReader handler = XMLReaderFactory.createXMLReader(); et c'est le titre de mon sujet :

    Can't create default XMLReader, is property org.xml.sax.driver set ?

    Merci.

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    - On a besoine les messages d'erreur de Java (original)
    - Le code complet si c'est possible. On n'a pas une boule de crystal pour ca.

    En attendant, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    XMLReader handler = XMLReaderFactory.createXMLReader();
    n'a aucune erreur. J'ai insere dans mon programme pour le test et il termine correctement

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    C'est ca le code d'erreur, les lignes d'après sont les lignes de localisation de l'erreur qui n'ont pas d'intérêt. L'exception qui donne cette erreur est "SAXException". De plus il est peut être utile de souligner que je travaille avec le JDK 1.31.

    Je ne comprends pas pourquoi toi cela fonctionne, tu as peut être une bibliothèque d'installée dont il se sert.

    Mon programme est fait pour fonctionner dans un environnement où il n'y a que le jdk 1.31, les bibliothèques de sax sont dans mon .jar :

    org.xml.sax
    org.xml.sax.ext
    org.xml.sax.helpers


    Main.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static void main(String[] args)
    {
       Parser parser = new Parser();
       try {
          XMLReader handler = XMLReaderFactory.createXMLReader();
          handler.setContentHandler(parser);
          handler.parse("xmltest.xml", parser);
       } catch (SAXException e) {
    	e.printStackTrace();
       } catch (IOException e) {
    	e.printStackTrace();
       }
    }
    Parser.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import org.xml.sax.helpers.DefaultHandler;
     
    public class Parser extends DefaultHandler {
        ... Toutes les méthodes nécessaires pour hériter de DefaultHandler sans aucun traitement à l'intérieur...
    }

  6. #6
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    - Java 1.3.1? On est en 1.5. ou 1.6, il faudrait passer en 1.4 ou 1.5 pour avoir benefie les nouveautes + corrections de bugs.

    - Mon environment est 1.5.x avec Sax 2.0.1


    Maintenant, d'apres le message
    "Can't create default XMLReader, is property org.xml.sax.driver set ?"
    Il parait qu'il demande le property pour org.xml.saz.driver soit initialisee.
    Il faut que tu regardes dans les doc de sax correspondant a ton jdk 1.3.x


    C'est difficile de migrer ton java vers une version plus recente?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    C'est pas possible, je travaille sur un système embarqué et il n'y a qu'une VM pour le jdk 1.31 et je peux rien y faire, j'aimerai bien pouvoir migrer .

    Il parait qu'il demande le property pour org.xml.saz.driver soit initialisee.
    Oui mais justement j'ai cherché et je sais qu'il faut rajouter quelque chose à la ligne de compilation mais ce quelque chose je voulais savoir ce que c'était. J'ai l'impression que c'est un parser comme si on en mettait un en argument lors de la création du XMLReader du genre "org.apache.xerces.parsers.SAXParser".

    Mais si c'est ça je ne comprends pas l'utilité de sax si on a besoin de faire ou d'utiliser un parser à coté.

    Merci.

  8. #8
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    - Quelle version Sax que tu ultises avec Java 1.3 ?
    - Si c'est possible tu regardes dans le code source ou la documentation de Sax pour voir ou il utilise/initialise ce parametre.

    Mais si c'est ça je ne comprends pas l'utilité de sax si on a besoin de faire ou d'utiliser un parser à coté.
    Je pense que le Sax c'est une veille version comme Java 1.3 (a l'epoque quand ils ont cree)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Oui c'est le 1.0 je crois mais j'ai déja été voir dans leur documentation et ils ne donnent pas d'exemple de ce que l'on peut mettre comme valeur à cette propriété. Et en plus ils disent que pour les systèmes embarqués, il y a d'autres moyens de créer des XMLReader mais ils ne disent pas lesquels.

  10. #10
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Peux-tu decompiler le sax pour voir ou ils ont utilise ce parametre?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    C'est vrai que j'avais pas pensé à regarder dans leur code, c'était une bonne idée :p. Merci.

    Alors voila ce que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    * <li>If the system property <code>org.xml.sax.driver</code>
    * has a value, that is used as an XMLReader class name. </li>
     
    private static final String property = "org.xml.sax.driver";
    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
     
    try { className = System.getProperty (property); }
    catch (RuntimeException e) { /* normally fails for applets */ }
     
    // ...
     
     
    // do we know the XMLReader implementation class yet?
    if (className != null)
        return loadClass (loader, className);
     
    // 4. panic -- adapt any SAX1 parser
    try {
    	 return new ParserAdapter (ParserFactory.makeParser ());
    } catch (Exception e) {
    	 throw new SAXException ("Can't create default XMLReader; "
    		 + "is system property org.xml.sax.driver set?");
    }
    Je vais aller voir ce qui est dit dans ParserFactory.makeParser() puisque ca vient de la en fait.

Discussions similaires

  1. [SAX] org.xml.sax.SAXParseException probleme avec &nbsp
    Par rasenganguy dans le forum Format d'échange (XML, JSON...)
    Réponses: 14
    Dernier message: 10/05/2012, 09h54
  2. XMLDecoder : org.xml.sax.SAXParseException
    Par benkil dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 16/03/2011, 08h56
  3. [XSD] Problème de XML validation par fichier XSD:org.xml.sax.SAXNotRecognizedException
    Par bareillesj dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/04/2007, 14h39
  4. [org.xml.sax.ErrorHandler] Empecher les messages automatiques
    Par Emplyst dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 25/07/2006, 21h03
  5. [netbeans 5.0] Probleme : org.xml.sax.SAXParseException
    Par romarseille dans le forum NetBeans
    Réponses: 4
    Dernier message: 12/06/2006, 11h35

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