java.lang.UnsatisfiedLinkError
je suis en train d'essayer d'accéder à la MQ des files d'attente à l'aide de JMS. je suis la ci-dessous
java.lang.UnsatisfiedLinkError: no mqjbnd05 in java.library.path
je suis de passage
-Djava.library.path="C:\Program Files\IBM\WebSphere MQ\java\lib"
que la VM argument lors de l'exécution du programme dans eclipse. Ce problème est discuté beaucoup sur le net, mais avec une conclusion. Quelqu'un a résolu ce problème? TIA.
source d'informationauteur hakish
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement un peu plus âgés MQ fichiers jar dans le CLASSPATH, dans la lib ou dans l'OREILLE.
Retirez-les et vous devriez être bien.
Vous ne devriez pas mettre MQ fichiers dans votre OREILLE ou dans le WEB-INF/lib de dossiers. Ils doivent être dans le classpath de votre serveur d'applications.
Que j'ai eu à traiter avec cette erreur moi-même; et il m'a fallu beaucoup de temps pour trouver la bonne réponse, je voudrais le partager avec le suivant, qui vient le long de ce fil...
En fait la solution de ce problème était très simple (au moins dans mon cas). Il n'était pas liée à
CLASSPATH
java.library.path
ou des problèmes d'installation.J'ai tout simplement oublié de basculer le
MQConnectionFactory
dans le mode Client.Ce qui doit être fait, en appelant simplement
ou
ou tout autre type de connexion, qui s'adapte à vos besoins.
Par défaut, le ConnectionFactory est en "Liaison" mode (
WMQ_CM_BINDINGS
), qui est destiné aux installations de serveur, comme il est indiqué dans la Documentation IBM:Ce type de transport est le même que le
XMSC_WMQ_CONNECTION_MODE
(WMQConstants.WMQ_CONNECTION_MODE
) des biens, lors de l'utilisation de JNDI ou laJmsFactoryFactory
.Le même principe devrait s'appliquer à l'autre ConnectionFactory types:
MQQueueConnectionFactory
MQTopicConnectionFactory
MQXAConnectionFactory
MQXAQueueConnectionFactory
etMQXATopicConnectionFactory
Vérifier le CSI Centre de Connaissances pour plus d'informations sur les différents connexion/liaison options:
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q031720_.htm
https://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q030560_.htm
Je suis tombé sur ce que lors de la connexion à l'aide d'IBM MQ api.
Je n'ai pas trouvé que cette question soit liée à classpath.
Ce qui m'est arrivé lorsque j'ai instancié
MQQueueManager
avant deMQEnvironment
'shostname
etchannel
.Assurez-vous juste que votre code ne le fait pas et qu'il instancie le gestionnaire après l'environnement. Quelque chose comme..
(Observé que c'est OK pour définir
MQEnvironment.port
aprèsMQQueueManager
est initialisé, mais on ne serait probablement initialiser tout ce qui a trait àMQEnvironment
ensemble)Voici une recette facile: Dire que la machine virtuelle Java pour Charger la DLL. Votre code est similaire, par exemple, utilisez-vous
System.loadLibrary
pour chargermqjbnd05.dll
?Si oui, faut-il travailler à l'extérieur de l'éclipse, à l'instar de démarrer l'application à partir de la ligne de commande? Si c'est le cas, vous pouvez essayer de lancer l'ensemble de l'IDE eclipse avec ce chemin de la bibliothèque.
Et parfois nous avons du mal avec les noms de fichiers contenant des espaces. Copier la dll à
C:\
le mettre sur la lib chemin et essayer de nouveau.Ah, c'est ça le problème, la dll est manquant. Ce blog a une solution. Bonne chance!
Cela peut se produire si vous fait installé MQ Client au lieu de la MQ Serveur.
IBM a même écrit un toute la page d'aide sujet: