2010-10-15 6 views
4

Je suis en train d'exécuter une classe que je fait mais je reçois cette erreur:java.lang.NoClassDefFoundError lors de l'exécution JMS consommateur

Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Destination

Je ne comprends pas pourquoi cela ne fonctionne pas même quand je les pots nécessaires inclus dans le classpath:

java consumer1 -cp activemq-all-5.3.2.jar

+1

Activemq-all-5.3.2.jar est-il dans le même répertoire que consumer1? –

+0

@karianna oui c'est – Jeune

+1

Avez-vous vérifié l'activemq-all-5.3.2.jar alors assurez-vous qu'il a cette classe? (peut être un artefact corrompu) vous pouvez exécuter 'jar tvf activemq-all-5.3.2.jar' pour voir. –

Répondre

3

l'option -cp de commande java doit être placé avant le nom de la classe:

java -cp .;activemq-all-5.3.2.jar consumer1 

Sinon, il est traité comme un argument de votre méthode main, pas comme l'argument java. Notez également que si vous spécifiez classpath avec l'option -cp, vous devez inclure le répertoire en cours afin d'exécuter les fichiers .class.

+0

J'ai fait l'option -cp avant le nom de la classe avant. La seule différence cette fois est que j'ai ajouté ceci ".;" Qu'est-ce que ça veut dire? Pour inclure dans le classpath tout dans le dossier actuel? Je ne comprends pas pourquoi j'ai besoin de faire cela quand il n'y a pas de dépendances dans le dossier actuel. – Jeune

+1

@Jeune: Lorsque vous exécutez 'java consumer1',' consumer1' est un nom de classe dans le classpath. Par défaut, classpath est un répertoire courant, donc cette commande lancera 'consumer1.class'. Lorsque vous utilisez l'option '-cp', vous remplacez le classpath par défaut, vous devez donc spécifier explicitement le dossier en cours afin d'exécuter' consumer1.class'. – axtavt

+0

merci! ça a bien nettoyé les choses! :) +1 – Jeune

Questions connexes