2011-05-12 7 views
5

J'essaie d'exécuter un programme Java à partir d'un fichier JAR. Java ne trouve pas de classe de support marc4j. Qu'est-ce que je fais mal. Voici les détailsClasse Java non trouvée

Dans mon courant est directement MarcTry.jar qui a ma classe principale. Il y a aussi marc4j.jar qui a la classe manquante:

org/marc4j/MarcReader 

Par exemple:

java -jar MarcTry.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/marc4j/MarcReader Caused by: java.lang.ClassNotFoundException: org.marc4j.MarcReader at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: marctry.Main. Program will exit.

J'ai essayé

java jar MarcTry.jar -classpath marc4j.jar

avec et sans marc4j.jar un chemin qualifié complet.

Toutes les idées sont les bienvenues.

Répondre

3

Le chemin de classe est ignoré lorsque vous utilisez le commutateur "-jar". Spécifiez les deux jars avec "-classpath" et exécutez la classe principale avec le nom complet.

E.g. java -cp MarcTry.jar; marc4j.jar com.domain.MainClass

.. ou ajouter marc4j.jar à l'entrée de classpath dans le fichier manifeste de MarcTry.jar

Vous pouvez lire sur l'ajout de pots à le classpath du fichier manifeste ici: Adding Classes to the JAR File's Classpath

+0

je pense que résolu mon problème Merci! Maintenant, une classe différente est manquante, mais je sais comment résoudre ce problème. (Le point-virgule dans votre réponse est une faute de frappe.) Un colon a fonctionné.) – Thwaites

+0

colon vs semicolon est spécifique à la plate-forme –

+0

Great! Vous pouvez, si vous le souhaitez, marquer cette réponse comme correcte. Cela marquera aux autres que la question a été répondue. – Kaj

1
java -cp <complete path for your supporting jar>;<your jar which you want to run> 

(pour la sécurité a mis les pots dans le même dossier)