Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de classpath avec Jaxen

9 réponses
Avatar
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!

9 réponses

Avatar
TestMan
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

Avatar
Raphael Tagliani
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!


Avatar
Raphael Tagliani
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!


Avatar
jlp
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.


Avatar
Raphael Tagliani
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!


Avatar
jlp
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.



Avatar
TestMan
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



Avatar
Raphael Tagliani
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.





Avatar
Raphael Tagliani
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