NoClassDefFoundError javax/jms/Message, même lors de la spécification de chemin de classe

Je rencontre une erreur lors de l'exécution de certaines de code java relatives à JMS. J'ai été en tirant sur mes cheveux pendant 2 jours à essayer de comprendre cela.

L'exception que j'obtiens est "java.lang.NoClassDefFoundError: javax/jms/Message"

java.lang.NoClassDefFoundError: javax/jms/Message
    at Asci.ActiveBatch.JMSAgent.JMSManager.createMsg(JMSManager.java:195)
    at Asci.ActiveBatch.JMSAgent.JMSService.SendMessageHandler(JMSService.java:160)

Sans entrer dans TROP de détails, c'est en référence à cette ligne:

public static void createMsg(String icf, String url, String cf, String QName, String msgText, String[] props, String user, String pass) throws Exception {
    JMSProducer.produceMsg(icf, url, cf, QName, msgText, props, user, pass);
}

(Ne me demandez pas pourquoi cette fonction est en fait juste de la cartographie pour une autre... je n'ai pas à l'origine d'écrire ce code)

Je vais appeler ce code comme

java -jar /path/myjarfile.jar

javax.jms.jar est inclus dans ce pot est manifeste (et il existe à cet endroit), mais juste au cas où, j'ai également essayé, y compris celui de mon dossier lib (qui contient javax.jms.jar, bien sûr) comme suit:

java -classpath /path/lib:. -jar /path/myjarfile.jar

Je n'ai pas eu de chance jusqu'à présent. Je ne suis pas sûre de savoir quoi faire ou comment faire pour déboguer ce problème. Toute aide serait grandement appréciée. Clairement, ce code compile, de sorte que ces classes doivent être disponibles (au moins) lors de la compilation.

Grâce.

MODIFICATIONS:

1) je n'ai également essayer
java -classpath /path/lib/javax.jms.jar:. -jar /path/myjarfile.jar

2) Ce problème se produit en cours d'exécution, et non pas au moment de la compilation.

3) Donc, j'ai un autre code qui appelle la même méthode dans le même fichier jar qui fonctionne. Il n'y a pas quelque chose de maillage de droit lors de l'appel de ce code à partir d'un bocal. J'ai vérifié et re-vérifié mon code pour s'assurer qu'il est identique (à qui il a été/est), donc il ne semble pas comme un problème de code. Il semble y avoir une foiré de référence ou quelque chose, quelque part.

Avez-vous essayé de java -classpath /path/lib/javax.jms.jar:. -jar /path/myjarfile.jar ?
Je ne comprends pas vraiment ce que JMS est, mais je sais qu'un 'NoClassDefFound'-Exeption signifie souvent, que quelque chose a été trouvé au moment de la compilation, mais pas au moment de l'exécution.
Oui, j'ai essayé de spécifier le pot de manière explicite.
Cela se passe au moment de l'exécution. Je vois 0 erreurs lors de compile-time.
Ce fournisseur JMS utilisez-vous? En général, vous devez utiliser leur JMS Pots.

OriginalL'auteur bdzevel | 2013-03-08