J'ai un problème étrange que je ne peux pas comprendre ... J'ai un simple pot HelloWorld que j'ai construit dans Eclipse qui a le pot Apache Loggings
sur son classpath. J'ai écrit un script pour exécuter le pot:Problèmes Java Jar et Classpath
#!/bin/sh
export CLASSPATH=lib/*:$CLASSPATH
java -jar HelloWorld.jar
La structure du répertoire est ici un répertoire principal avec le HelloWorld.jar
et un sous-répertoire lib
tenant le commons-logging-1.1.1.jar
.
L'exécution de ce script fonctionne correctement. Cependant, quand je place le HelloWorld.jar
dans le répertoire lib
(par exemple pour contenir tous les fichiers JAR dans un endroit), et l'exécution java -jar lib/HelloWorld.jar
, je reçois:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
erreur
. Pourquoi?!?!?!?! Je demande cela parce que j'ai utilisé le JarBundler sur OSX pour créer un ensemble d'applications pour l'application HelloWorld et placé un script modifié dans le répertoire MacOS
alors que toutes les bibliothèques sont placées dans le répertoire Resources/Java
. version modifiée du script est:
#!/bin/sh
RESOURCE_DIR=$(cd "../Resources"; pwd)
export CLASSPATH=$RESOURCE_DIR/Java/*:$CLASSPATH
java -jar $RESOURCE_DIR/Java/HelloWorld.jar
et je reçois la même erreur que ci-dessus, je vous en serais reconnaissant toute aide pour comprendre pourquoi je ne peux pas le faire et/ou comment y remédier?
dans votre classpath * –