2010-06-16 8 views
7

J'ai un seul fichier .java (driver.java) que j'essaie de compiler et de lancer à partir de la ligne de commande. Il utilise la bibliothèque externe appelée EXT.jar, dont la structure est juste un dossier appelé EXT avec quelques dizaines de classes à l'intérieur.Problèmes de ligne de commande Java avec les bibliothèques .jar

Alors je cours:

javac -cp EXT.jar driver.java 

Cette compile la classe très bien.

puis quand je lance:

java -cp EXT.jar driver 

je reçois un java.lang.NoClassDefFoundError. Bizarrement, si je déballe le JAR (alors maintenant j'ai un dossier dans le répertoire racine appelé EXT), la dernière commande fonctionne très bien !! Le pilote va s'exécuter!

Y at-il un moyen de faire en sorte que driver.class recherche les fichiers de classe nécessaires à partir de EXT.jar/EXT/*class au lieu d'un dossier EXT réel?

Merci!

Répondre

18

Vous compilez la classe dans le répertoire local. Donc, lorsque vous l'exécutez, vous devez inclure le répertoire courant dans votre chemin de classe. Par exemple:

java -cp .;EXT.jar driver 

Ou dans linux:

java -cp .:EXT.jar driver 

Avec la façon dont vous l'avez maintenant, vous dites votre classpath est seulement EXT.jar (ainsi que tout ce qui est dans l'environnement CLASSPATH variable) et rien d'autre (c'est pourquoi le répertoire courant, où driver.class est situé, est exclu)

+0

Parfait! Merci! – Monster

+0

Fera. J'ai apparemment besoin d'attendre 15 minutes pour accepter une réponse :) – Monster

+0

Merci Matt, votre réponse a travaillé pour moi dans le cas d'un seul pot, mais maintenant j'ai besoin de 2 utiliser un autre pot. Les deux jars sont dans un dossier appelé "libs" dans mon projet. Mais ne pouvait pas le faire fonctionner. J'utilise Ubuntu. aide plz – AndroidGuy

Questions connexes