NoClassDefFoundError (Initialisierungsfehler) - Websphere-und IBM-MQ
Ich habe ein problem auf einem Spring-basierte Web-App wird unter Websphere implementiert und interagiert mit IBM MQ.
Alles ist gut, bis ich versuche, einige Fehler tests.
Während die webapp läuft, höre ich auf IBM MQ. Ich rufen Sie dann die webapp zum senden einer JMS-Nachricht aus. Die webapp hing mit dem Aufruf JmsTemplate.convertAndSend und die folgende Ausnahme fand sich in der ffdc-Verzeichnis.
Hinweis: die JmsTemplate wurde initialisiert mit dem JNDIObjectFactoryBean, wo hatte Sie in der MQ-Verbindung Werkseinstellungen von Websphere.
Kann jemand erklären, der Grund für die "Initializaton Fehler" ??
[27/01/11 14:29:39:498 GMT] FFDC Exception:java.lang.NoClassDefFoundError SourceId:com.ibm.ws.asynchbeans.J2EEContext.run ProbeId:894 Reporter:com.ibm.ws.asynchbeans.J2EEContext@1280128
java.lang.NoClassDefFoundError: com.ibm.msg.client.wmq.common.internal.Reason (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1024)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:997)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.access$800(WMQMessageProducer.java:63)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.initialise(WMQMessageProducer.java:758)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.<init>(WMQMessageProducer.java:972)
at com.ibm.msg.client.wmq.internal.WMQSession.createProducer(WMQSession.java:943)
at com.ibm.msg.client.jms.internal.JmsSessionImpl.createProducer(JmsSessionImpl.java:1162)
at com.ibm.msg.client.jms.internal.JmsQueueSessionImpl.createSender(JmsQueueSessionImpl.java:131)
at com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:148)
at com.ibm.mq.jms.MQQueueSession.createProducer(MQQueueSession.java:249)
at com.ibm.ejs.jms.JMSMessageProducerHandle.<init>(JMSMessageProducerHandle.java:132)
at com.ibm.ejs.jms.JMSSessionHandle.createProducer(JMSSessionHandle.java:1788)
at org.springframework.jms.core.JmsTemplate.doCreateProducer(JmsTemplate.java:968)
at org.springframework.jms.core.JmsTemplate.createProducer(JmsTemplate.java:949)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:568)
at org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:541)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:539)
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:617)
- Ich weiß nichts über Frühling, aber ich vermute, dass statt der ein Fehler in WMQ client full install, nur ein Fehler in WMQ Gläser wurden packte? Wenn dem so ist, dann sind Sie wahrscheinlich fehlt die message-catalog oder einige der NLS-Stücke. Wenn das klingt plausibel, ich werde glücklich sein, zu schreiben, eine detaillierte Antwort mit den links zu den jeweiligen downloads und Anleitungen.
- Hallo Rob, ich bin nicht sicher, die den Aufbau der Maschine, also nicht wissen, wie ein Fehler in WMQ installiert wurde. Wie könnte ich dies überprüfen?
- Wäre es in /usr/mqm (AIX) /opt/mqm (andere UNIX/Linux) oder Windows-es ist in der Regel in C:\Program Files\IBM\WebSphere MQ. In der Regel, ob es in Ihrem Pfad, den Sie eingeben können dspmqver zu sehen, die version und die release-Nummer.
- Version: 7.0.1.0 CMVC Level: p000-L090813 BuildType: IKAP (Produktion)
- Naja, bin froh, dass ich dieses als Kommentar und keine Antwort. Ich war auf der falschen Spur.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den "(Initialisierungsfehler)" bedeutet, dass der statische Initialisierer ("<clinit>") - Methode der Klasse zuvor warf eine ungeprüfte Ausnahme. Wenn dies Auftritt, wird die JVM markiert die Klasse als schlecht, und die nachfolgenden versuche zu verwenden, oder den Zugriff auf die Klasse Ergebnis in NoClassDefFoundError. Suchen Sie die Protokolle für Fehler, die zählen "Grund.<clinit>" in den stack-trace zu finden, die zugrunde liegende Ursache.
(Im Allgemeinen, die NoClassDefFoundError sollte eine "Verursacht durch" mit Ausnahme aufgetreten ist, dass im statischen Initialisierer, aber für einige Grund, die Ursache entweder nicht anwesend war oder Sie wusste nicht, fügen Sie es in Ihrem stack-trace.)
Er sieht aus wie ein message-catalog fehlt. Ich lese das "stack dump" als die geworfene exception (NoClassDefFound) ist beim Zugriff etwas im Konstruktor. Die fehlende Klasse kann die tatsächliche Ursache oder die fehlende Meldung kann verstecken die eigentliche Ausnahme, abhängig davon, wie er ausgelöst wurde, natürlich. Können Sie einen catch-block und manuell gehen die geschachtelte Ausnahmen?
Selbst wenn diese Ausnahme ist nicht Teil eines verschachtelten Ausnahme, es könnte auch bedeuten, es instanziiert wurde in einem catch-block eine unbekannte Ausnahme. Ich würde nicht erwarten, dass das Thema in IBM MQ-code, aber man weiß ja nie.