Java.lang.NoClassDefFoundError

Fermé
Juju62 - 28 avril 2008 à 17:09
 juju62 - 29 avril 2008 à 10:28
Bonjour,
voici comment sont répartis mes dossiers:
ScreeningAssistant : repertoire dans lequel je me mets pour lancer ma commande java
Dans ce rep se trouvent les rep java_api et sa.
dans java_api se trouvent mes .jar et dans sa se trouvent la classe contenant le main(ScreeningAssistantGUI) et d'autres rep(packages) contenant les autres classes de mon appli.

je lance la commande suivante (sous linux debian lenny):

java -classpath ".:java_api/forms-1.0.4.jar:java_api/itext-0.94.jar:java_api/jcommon-0.9.5.jar:java_api/jfreechart-0.9.20.jar:java_api/joelib.jar:java_api/localedata.jar:java_api/log4j.jar:java_api/looks-1.3.1.jar:java_api/mysql-connector-java-3.0.14-production-bin.jar:java_api/vecmath.jar:java_api/jdom.jar" sa/ScreeningAssistantGUI

et voilà la réponse :

Exception during event dispatch:
java.lang.NoClassDefFoundError: joelib.io.types.ChemicalMarkupLanguage
at java.lang.Class.initializeClass(libgcj.so.90)
at java.lang.Class.forName(libgcj.so.90)
at java.lang.Class.forName(libgcj.so.90)
at joelib.io.JOEFileFormat.getMoleculeFileType(JOEFileFormat.java:160)
at joelib.io.IOTypeHolder.loadFileTypes(IOTypeHolder.java:588)
at joelib.io.IOTypeHolder.instance(IOTypeHolder.java:192)
at sa.gui.JOELibStructureViewer.<init>(JOELibStructureViewer.java:46)
at sa.ScreeningAssistantGUI.<init>(ScreeningAssistantGUI.java:83)
at sa.ScreeningAssistantGUI.createAndShowGUI(ScreeningAssistantGUI.java:213)
at sa.ScreeningAssistantGUI.access$0(ScreeningAssistantGUI.java:208)
at sa.ScreeningAssistantGUI$1.run(ScreeningAssistantGUI.java:243)
at java.awt.event.InvocationEvent.dispatch(libgcj.so.90)
at java.awt.EventQueue.dispatchEvent(libgcj.so.90)
at java.awt.EventDispatchThread.run(libgcj.so.90)
Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./,file:java_api/forms-1.0.4.jar,file:java_api/itext-0.94.jar,file:java_api/jcommon-0.9.5.jar,file:java_api/jfreechart-0.9.20.jar,file:java_api/joelib.jar,file:java_api/localedata.jar,file:java_api/log4j.jar,file:java_api/looks-1.3.1.jar,file:java_api/mysql-connector-java-3.0.14-production-bin.jar,file:java_api/vecmath.jar,file:java_api/jdom.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.90)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at java.lang.Class.forName(libgcj.so.90)
at java.lang.Class.initializeClass(libgcj.so.90)
...13 more


Je n'arrive pas à résoudre ce problème, pouvez-vous m'aider s'il vous plait?!

2 réponses

Utilisateur anonyme
28 avril 2008 à 17:12
Vérifie ton classpath car il n'arrive pas à trouver certaines de tes classes
3
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
28 avril 2008 à 17:17
Bonjour,
j'ai l'impression qu'il manque des lignes dans ton script shell non ? Ou peut etre un problème d'affichage lors du post.

Dans tous les cas voici un exemple de script shell pour lancer une application java, qui fonctionne, si ça peut t'aider :
echo "Set working classpath ..."
HOME=.
export HOME

MYCLASSPATH=$HOME/config

### Use of xerces release 2.1.7
MYCLASSPATH=$MYCLASSPATH:$HOME/lib/xml-apis.jar
MYCLASSPATH=$MYCLASSPATH:$HOME/lib/xercesImpl.jar
MYCLASSPATH=$MYCLASSPATH:$HOME/lib/log4j-1.2.13.jar

### Set classpath with myclasspath
CLASSPATH=$MYCLASSPATH:$CLASSPATH
export CLASSPATH
echo "Working classpath is " $CLASSPATH

### Launch java program
## $1, $2 are script arguments
java -Xmx512m -Xms150m org.*.*.*.*.MaClasse $HOME $1 $2;



Personnellement je trouve ça plus propre de configurer le classpath de cette manière, et lancer la classe java simplement avec ses arguments à la fin.
Ce qui compte c'est la commande export qui permet de mettre à jour le classpath de la machine avec ce que tu as rajouté.

Essai de faire de la même manière pour voir si ça change quelque chose.
1
merci mais ca ne fonctionne toujours pas. Je ne trouve pas d'où peut venir le problème. Quelqu'un aurait-il écho d'un problème de compatibilité entre joelib et certains noyaux linux?
0