OVH Cloud OVH Cloud

probleme de SAXParserFactory.newInstance() !

2 réponses
Avatar
Xavier Seneque
Bonjour tlm !

je developpe un ptit truc qui parse un flux en xml, pour voir comment
marche le parsage de xml, je vais donc voir sur le site de sun :

http://developers.sun.com/sw/building/codesamples/sax/index.html

je fais pas mal de copiés coller, j'adapte à ma sauce, j'ai un truc qui
compile et qui a l'air de ressembler à ce que je veux, mais, à
l'execution... rien ne vas plus ! :

[java] Provider
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl not found
[java] javax.xml.parsers.FactoryConfigurationError: Provider
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl not found
[java] at
javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:113)
[java] at sheepim.servrep.ClientHandler.create(Unknown Source)
[java] at sheepim.servrep.ClientHandler.run(Unknown Source)
[java] java.lang.NullPointerException
[java] at sheepim.servrep.ClientHandler.parse(Unknown Source)
[java] at sheepim.servrep.ClientHandler.run(Unknown Source)

bon en gros l'erreur, si j'ai bien compris, est que mon jre n'arrive pas
à créer de SAXParserFactory avec la methode static newInstance() ...

voir :
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()

voilà la tete de ma methode create :
private void create() {
try {
// Obtain a new instance of a SAXParserFactory.
SAXParserFactory factory = SAXParserFactory.newInstance();
// Specifies that the parser produced by this code will
provide support for XML namespaces.
factory.setNamespaceAware(true);
// Specifies that the parser produced by this code will
validate documents as they are parsed.
factory.setValidating(true);
// Creates a new instance of a SAXParser using the
currently configured factory parameters.
saxParser = factory.newSAXParser();
}
catch( FactoryConfigurationError e ){
System.err.println(e.getMessage());
System.err.println();
e.printStackTrace();
}
catch (Throwable t) {
System.err.println("Erreur dans la creation du parseur SAX");
t.printStackTrace();
}
}

donc en gros un bon gros copié coller depuis le site de sun... avec
juste les catch de modifiés !!!

alors d'apres le site si j'ai bien compris pour que le newInstance()
fonctionne il faudrait que la propriété du systeme
javax.xml.parsers.SAXParserFactory soit bien paramétrée ... mais bon,
euh, ça se met où ? j'y met quoi ?

ou alors bien configurer le fichier lib/jaxp.properties dans le jre,
mais pareil, j'y met quoi ?

les infos sur mon systeme :
java -version
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)

javac -version
javac 1.5.0_01

sur une debian linux 2.6.8

merci d'avance à tous ceux qui auront la patience de s'interesser à mon
probleme !

xs

2 réponses

Avatar
Symon
Peut être qu'il essai d'utiliser le parser inclus dans le JDK en
versions 1.4 et + ?

http://www.sagehill.net/docbookxsl/InstallingAProcessor.html#EndorsedXalan

Symon


Xavier Seneque wrote:
Bonjour tlm !

je developpe un ptit truc qui parse un flux en xml, pour voir comment
marche le parsage de xml, je vais donc voir sur le site de sun :

http://developers.sun.com/sw/building/codesamples/sax/index.html

je fais pas mal de copiés coller, j'adapte à ma sauce, j'ai un truc qui
compile et qui a l'air de ressembler à ce que je veux, mais, à
l'execution... rien ne vas plus ! :

[java] Provider
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl not found
[java] javax.xml.parsers.FactoryConfigurationError: Provider
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl not found
[java] at
javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:113)
[java] at sheepim.servrep.ClientHandler.create(Unknown Source)
[java] at sheepim.servrep.ClientHandler.run(Unknown Source)
[java] java.lang.NullPointerException
[java] at sheepim.servrep.ClientHandler.parse(Unknown Source)
[java] at sheepim.servrep.ClientHandler.run(Unknown Source)

bon en gros l'erreur, si j'ai bien compris, est que mon jre n'arrive pas
à créer de SAXParserFactory avec la methode static newInstance() ...

voir :
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/SAXParserFactory.html#newInstance()


voilà la tete de ma methode create :
private void create() {
try {
// Obtain a new instance of a SAXParserFactory.
SAXParserFactory factory = SAXParserFactory.newInstance();
// Specifies that the parser produced by this code will
provide support for XML namespaces.
factory.setNamespaceAware(true);
// Specifies that the parser produced by this code will
validate documents as they are parsed.
factory.setValidating(true);
// Creates a new instance of a SAXParser using the currently
configured factory parameters.
saxParser = factory.newSAXParser();
}
catch( FactoryConfigurationError e ){
System.err.println(e.getMessage());
System.err.println();
e.printStackTrace();
}
catch (Throwable t) {
System.err.println("Erreur dans la creation du parseur SAX");
t.printStackTrace();
}
}

donc en gros un bon gros copié coller depuis le site de sun... avec
juste les catch de modifiés !!!

alors d'apres le site si j'ai bien compris pour que le newInstance()
fonctionne il faudrait que la propriété du systeme
javax.xml.parsers.SAXParserFactory soit bien paramétrée ... mais bon,
euh, ça se met où ? j'y met quoi ?

ou alors bien configurer le fichier lib/jaxp.properties dans le jre,
mais pareil, j'y met quoi ?

les infos sur mon systeme :
java -version
java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)

javac -version
javac 1.5.0_01

sur une debian linux 2.6.8

merci d'avance à tous ceux qui auront la patience de s'interesser à mon
probleme !

xs


Avatar
Xavier Seneque
Symon wrote:
Peut être qu'il essai d'utiliser le parser inclus dans le JDK en
versions 1.4 et + ?

http://www.sagehill.net/docbookxsl/InstallingAProcessor.html#EndorsedXalan

Symon



merci !
en fait suffisait de mettre le xercesImpl.jar dans le classpath... haha,
que c drole ...

*rit jaune*

xs