Problème de classpath avec Jaxen

Le
Raphael Tagliani
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel =
"+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TestMan
Le #232160
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel > "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!


Bonsoir,

Avez vous définit une bibilotheque nommée jaxen, puis l'avez vous
référencée dans votre projet ?

"logiquement" ça marche si la dite classe est bien dans les jars "sus
nommés" ;-)

A+
TM

Raphael Tagliani
Le #232118
TestMan wrote:
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel >> "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!


Bonsoir,

Avez vous définit une bibilotheque nommée jaxen, puis l'avez vous
référencée dans votre projet ?

"logiquement" ça marche si la dite classe est bien dans les jars "sus
nommés" ;-)

A+
TM
J'ai créé une bibliothèque xmlparsing dans laquelle j'ai mis tous les

jars mentionnés, et je l'ai ajoutée au projet.
Aucune erreur à la compilation, et si je n'utilise pas XPath, tout
fonctionne, donc l'ajout de la bibliothèque passe...
Je vais essayer d'utiliser JAXB dans mon projet, c'est peut-être plus
sain... Je ne sais pas trop, mais en passant, ça me force à faire des
schema (xsd) pour mes xml.
Est-ce que vous sauriez sur quoi repose le parsing JAXB? Parsing 'à la
DOM', 'à la StAX' ou 'à la SAX' (surtout pour le footprint mémoire)?

Merci!


Raphael Tagliani
Le #232112
Définitivement, ça ne fonctionne pas, pour une raison inconnue... dommage.

Raphael Tagliani wrote:
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel > "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!


jlp
Le #232063
Définitivement, ça ne fonctionne pas, pour une raison inconnue... dommage.

Raphael Tagliani wrote:
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel >> "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!
Peut-être que le lancement de ton serveur applicatif modifie le


CLASSPATH. Le mieux est de mettre le .jar dans le repertoire WEB-INF/lib
de ta webapp.


Raphael Tagliani
Le #232062
jlp wrote:
Définitivement, ça ne fonctionne pas, pour une raison inconnue...
dommage.

Peut-être que le lancement de ton serveur applicatif modifie le

CLASSPATH. Le mieux est de mettre le .jar dans le repertoire WEB-INF/lib
de ta webapp.


Je pense que c'est en effet une explication plausible. Par contre, je
travaille dans la partie EJB. Savez-vous quel est l'équivalent de
WEB-INF/lib pour la partie EJB?
Merci!


jlp
Le #232061
jlp wrote:
Définitivement, ça ne fonctionne pas, pour une raison inconnue...
dommage.

Peut-être que le lancement de ton serveur applicatif modifie le

CLASSPATH. Le mieux est de mettre le .jar dans le repertoire
WEB-INF/lib de ta webapp.


Je pense que c'est en effet une explication plausible. Par contre, je
travaille dans la partie EJB. Savez-vous quel est l'équivalent de
WEB-INF/lib pour la partie EJB?
Merci!


Dans ce cas faut mettre le classpath dans le META-INF/manifest.mf du
packaging jar de tes EJB
Voir la doc fournie avec l'API java pour utiliser les jar et les
directives du fichier manifest.



TestMan
Le #232060
TestMan wrote:
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel >>> "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!


Bonsoir,

Avez vous définit une bibilotheque nommée jaxen, puis l'avez vous
référencée dans votre projet ?

"logiquement" ça marche si la dite classe est bien dans les jars "sus
nommés" ;-)

A+
TM
J'ai créé une bibliothèque xmlparsing dans laquelle j'ai mis tous les

jars mentionnés, et je l'ai ajoutée au projet.
Aucune erreur à la compilation, et si je n'utilise pas XPath, tout
fonctionne, donc l'ajout de la bibliothèque passe...
Je vais essayer d'utiliser JAXB dans mon projet, c'est peut-être plus
sain... Je ne sais pas trop, mais en passant, ça me force à faire des
schema (xsd) pour mes xml.
Est-ce que vous sauriez sur quoi repose le parsing JAXB? Parsing 'à la
DOM', 'à la StAX' ou 'à la SAX' (surtout pour le footprint mémoire)?

Merci!


Bonsoir,

JAXB, sauf erreur te permet de préciser la technique d'analyse, voir par
exemple dans le cas d'utilisation d'un FastInfoset
https://fi.dev.java.net/how-to-use.html

A+
TM



Raphael Tagliani
Le #232009
Ok, j'essaierai, je crois que vous avez mis le doigt sur le problème.
Merci, bonne journée!

jlp wrote:
jlp wrote:
Définitivement, ça ne fonctionne pas, pour une raison inconnue...
dommage.

Peut-être que le lancement de ton serveur applicatif modifie le

CLASSPATH. Le mieux est de mettre le .jar dans le repertoire
WEB-INF/lib de ta webapp.


Je pense que c'est en effet une explication plausible. Par contre, je
travaille dans la partie EJB. Savez-vous quel est l'équivalent de
WEB-INF/lib pour la partie EJB?
Merci!


Dans ce cas faut mettre le classpath dans le META-INF/manifest.mf du
packaging jar de tes EJB
Voir la doc fournie avec l'API java pour utiliser les jar et les
directives du fichier manifest.





Raphael Tagliani
Le #232008
Merci, je vais regarder.
Bonne journée!

TestMan wrote:
TestMan wrote:
Bonjour,

Je voudrais utiliser XPath dans un projet J2EE avec Netbeans.

Malheureusement, j'ai toujours cette erreur au runtime:

java.lang.NoClassDefFoundError: org/jaxen/JaxenException


J'ai essayé le même code dans un projet standard (non j2ee) sous
eclipse, et ça fonctionne sans problème.

Je suis sûr que celà ne vient pas du JDK: j'utilise le même depuis
eclipse et netbeans.

J'ai bien ajouté toutes les libs nécessaires, et je trouve la classe en
question dans jaxen-core.jar

Est-ce qu'une subtilité J2EE ou netbeans m'aurait échappée?
Auriez-vous une solution?

Remarque: j'utilise JDOM 1.0 et les librairies qui sont packagées avec.


Voici un petit prog de test:

package tst;

import java.io.File;
import java.io.IOException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

public class XpathTester {

/**
* @param args
* @throws JDOMException
*/
public static void main(String[] args) throws JDOMException {
String xmlFilePath = "xml/test.xml";
System.out.println("XPath Tester");
Document doc = XpathTester.getDocument(xmlFilePath);
XPath xpath = XPath.newInstance("//Panel[@ID='2']");
Element e = (Element)xpath.selectSingleNode(doc);
System.out.println("Panel 2 Internlabel >>>> "+e.getAttributeValue("InternLabel"));
}

private static Document getDocument(String filePath) {
Document document = null;
SAXBuilder sxb = new SAXBuilder();
try {
File file = new File(filePath);
document = sxb.build(file);
} catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return document;
}

}


Il suffit mettre un fichier test.xml dans un repertoire xml à la racine
du projet, comme celui-ci:

<test>
<g>
<Panel ID="2" InternLabel="Test XPath"/>
</g>
</test>

et d'ajouter les librairies:
jdom.jar
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar

qu'on peut télécharger ici:
http://www.jdom.org/


Merci beaucoup!


Bonsoir,

Avez vous définit une bibilotheque nommée jaxen, puis l'avez vous
référencée dans votre projet ?

"logiquement" ça marche si la dite classe est bien dans les jars "sus
nommés" ;-)

A+
TM
J'ai créé une bibliothèque xmlparsing dans laquelle j'ai mis tous les

jars mentionnés, et je l'ai ajoutée au projet.
Aucune erreur à la compilation, et si je n'utilise pas XPath, tout
fonctionne, donc l'ajout de la bibliothèque passe...
Je vais essayer d'utiliser JAXB dans mon projet, c'est peut-être plus
sain... Je ne sais pas trop, mais en passant, ça me force à faire des
schema (xsd) pour mes xml.
Est-ce que vous sauriez sur quoi repose le parsing JAXB? Parsing 'à la
DOM', 'à la StAX' ou 'à la SAX' (surtout pour le footprint mémoire)?

Merci!


Bonsoir,

JAXB, sauf erreur te permet de préciser la technique d'analyse, voir par
exemple dans le cas d'utilisation d'un FastInfoset
https://fi.dev.java.net/how-to-use.html

A+
TM





Publicité
Poster une réponse
Anonyme