NoClassDefFoundError avec l'Exécutable Jar

Probablement une habitude problème avec exec jar. Je suis en train de créer et d'exécuter un fichier exécutable jar et sa me rend fou.

J'ai un couple de classes(avec package stmts), dont l'un a une méthode main, un simple constructeur vide et bien sûr quelques biz méthodes, elles font partie d'un petit projet eclipse.

Je suis le regroupement de ces deux et un fichier manifeste dans un pot(arc.jar) à l'aide d'un build.xml. Mon programme utilise jdom bibliothèque et également des références à partir d'un de mes autres projets eclipse, je suis donc y compris les deux jdom agence canadienne de développement international et d'autres biz bibliothèque lors de la construction de ma arc.jar.

C'est le Manifeste.MF que j'ai écrit, il y a un nouveau lineafter Principal de la Classe

Manifest-Version: 1.2  
Class-Path: jdom.jar other.jar
Main-class: uk.co.Art 

Quand je décompressez ce arc.jar il contient jdom.jar, other.jar, META-INF/Manifest.mf et le colis avec mes classes.
Curieusement, le fichier Manifeste dans le bocal ressemble à ceci -

Manifest-Version: 1.2 
Created-By: 14.2-b01 (Sun Microsystems Inc.) 
Main-class: uk.co.Art
Class-Path: jdom.jar other.jar

J'ai eu ClassNotFoundException ClassNotFoundException: uk.co.Art lorsque la valeur de la classe Principale était sans forfait. Avec le paquet de l'erreur changé à ClassNotFoundException: org.jdom.JDOMException.

Donc, juste pour le test de fin, j'ai essayé de donner le fullpaths avec c:\ pour mon exécution de la classe et les pots, mais encore il n'est pas capable de localiser la classe principale, une erreur se produit au ClassNotFoundException: uk.co.Art.

Je ne peux pas l'air de comprendre pourquoi.

La ligne de commande que j'utilise est - java -jar Arc.jar

La version sur invite de cmd est -

java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode)


même si l'eclipse installé jre est re6

Que pouvez-vous proposer ?

Alex solution ne résoudra pas le problème pour l'exécution locale.

Je pense également à un autre moyen(comme une option supplémentaire) d'exécution, de déployer la Arc.jar sur le serveur et d'exécuter un lot sur cette machine qui, fondamentalement, définit le chemin de classe java, puis appelle le pot ou directement la classe selon la façon dont il fonctionne. But its only an option, not a preferred one though.

Ou, également, de définir cette classe dans mon manifeste et construire pot localement et de les déployer sur le serveur.

Aimeriez essayer quelques choses de bien. But now I understand that the basic problem was jars into jar and hence classpath issue.

Merci beaucoup les gens.

InformationsquelleAutor Swift-Tuttle | 2010-12-23