2010-08-18 5 views
4

J'ai une application qui utilise un pot externe. J'ai utilisé Eclipse et ça marche bien. J'exporte comme jar d'eclipse, ayant créé un fichier manifeste qui a comme chemin de classe: ./cab.v1.jar Je place les deux jars dans le même répertoire. Je cours dans la ligne de commande: java -jar MyApp.jarJava exécuter jar qui dépend de l'autre jar de la ligne de commande

et obtenir java.lang.NoClassDefFoundError pour les classes du cab.v1.jar (autre pot) ont également essayé java -cp. -jar myApp.jar mais pas de succès. Qu'est-ce que je fais de mal?

Répondre

6

En utilisant le documentation for the Manifest, il n'utilise pas de ./ pour les répertoires relatifs. Essayez seulement avec:

Class-Path: cab.v1.jar 

Notez que l'option -cp est ignorée lors de l'utilisation -jar.

+0

Merci. Je l'ai essayé, je n'ai pas travaillé mais j'ai extrait le fichier jar et j'ai vu qu'eclipse n'utilisait pas mon class-path dans le fichier maninifest. L'a fait manuellement et cela fonctionne. Une idée pourquoi eclipse fait cela? – Cratylus

+2

Vous devez utiliser Export -> Runnable Jar pour cela. –

+0

@Ravn Andersen: Merci !!! Avec le pot runnable cela a fonctionné! – Cratylus

2

Si vous utilisez l'option -jar, le chemin de classe est ignoré. Vous pouvez démarrer l'application par

java -cp jar1.jar:jar2.jar mainclass 

Le séparateur de chemin de classe ':' est ';' sur les fenêtres.

+0

Essayé comme vous l'avez dit: java -cp cab.v1.jar -jar myApp.jar mais toujours la même erreur. Notez que les deux jars sont dans le même répertoire – Cratylus

+0

@ user38706 J'ai écrit que vous ne pouvez pas utiliser -jar et -cp ensemble. Voici plusieurs options: http://mindprod.com/jgloss/classpath.html – stacker

+0

Désolé, mon mauvais. Quoi qu'il en soit, j'ai extrait le fichier jar et j'ai vu que eclipse n'utilisait pas mon class-path dans le fichier manifeste. L'a fait manuellement et cela fonctionne. Une idée pourquoi eclipse fait cela? – Cratylus