2017-07-19 3 views
1

J'essaie d'exécuter un simple exemple HornetQ à partir d'un livre (HornetQ Messaging Developers Guide), mais obtenir des messages d'erreur. Je n'ai pas utilisé maven puisque je voulais coller à l'exemple donné dans le livre. Le serveur HornetQ Standalone a démarré normalement en ligne de commande. J'essaie juste d'envoyer un message au serveur HonretQ.HornetQ - java.lang.NoClassDefFoundError: Lorg/hornetq/core/logging/Logger;

package chapter01; 

import javax.jms.JMSException; 
import javax.naming.NamingException; 

public class ECGMessageConsumerProducerExample { 

    public static void main(String[] args) throws NamingException, JMSException { 
     // TODO Auto-generated method stub 


     javax.naming.Context ic = null; 
     javax.jms.ConnectionFactory cf = null; 
     javax.jms.Connection connection = null; 
     javax.jms.Queue queue = null; 
     javax.jms.Session session = null; 
     com.mongodb.Mongo m; 
     com.mongodb.DB db; 
     String destinationName = "queue/DLQ"; 


     java.util.Properties p = new java.util.Properties(); 
     p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
     "org.jnp.interfaces.NamingContextFactory"); 
     p.put(javax.naming.Context.URL_PKG_PREFIXES, 
     "org.jboss.naming:org.jnp.interfaces"); 
     p.put(javax.naming.Context.PROVIDER_URL, "jnp://localhost:1099"); 
     ic = new javax.naming.InitialContext(p); 


     cf = (javax.jms.ConnectionFactory)ic.lookup("/ConnectionFactory"); 
     queue = (javax.jms.Queue)ic.lookup(destinationName); 
     connection = cf.createConnection(); 
     session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE); 
     connection.start(); 


     String theECG = "1;02/20/2012 14:01:59.010;1020,1021,1022"; 
     javax.jms.MessageProducer publisher = session.createProducer(queue); 
     javax.jms.TextMessage message = 
     session.createTextMessage(theECG); 
     publisher.send(message); 
     System.out.println("Message sent!"); 
     publisher.close(); 





    } 

} 

Eventhough J'ajouté tous les pots mentionnés dans le livre que je reçois l'erreur suivante:

Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/hornetq/core/logging/Logger; 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Unknown Source) 
    at java.lang.Class.getDeclaredField(Unknown Source) 
    at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source) 
    at java.io.ObjectStreamClass.access$700(Unknown Source) 
    at java.io.ObjectStreamClass$2.run(Unknown Source) 
    at java.io.ObjectStreamClass$2.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.io.ObjectStreamClass.<init>(Unknown Source) 
    at java.io.ObjectStreamClass.lookup(Unknown Source) 
    at java.io.ObjectStreamClass.initNonProxy(Unknown Source) 
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
    at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) 
    at java.io.ObjectInputStream.readClassDesc(Unknown Source) 
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
    at java.io.ObjectInputStream.readObject0(Unknown Source) 
    at java.io.ObjectInputStream.readObject(Unknown Source) 
    at org.hornetq.jms.referenceable.SerializableObjectRefAddr.deserialize(SerializableObjectRefAddr.java:79) 
    at org.hornetq.jms.referenceable.ConnectionFactoryObjectFactory.getObjectInstance(ConnectionFactoryObjectFactory.java:43) 
    at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source) 
    at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1479) 
    at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1496) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:822) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686) 
    at javax.naming.InitialContext.lookup(Unknown Source) 
    at chapter01.ECGMessageConsumerProducerExample.main(ECGMessageConsumerProducerExample.java:31) 
Caused by: java.lang.ClassNotFoundException: org.hornetq.core.logging.Logger 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 27 more 

J'ai aussi ajouté un tas d'autres pots que je trouve liée à ce sujet, mais sans résoudre le problème .

Overview of Jars

Y at-il une raison pour laquelle l'erreur revient?

+1

Probablement les deux classpaths a une version différente d'un pot - qui expliquerait noClassDefFound. La sérialisation/désérialisation échoue. Essayez de faire correspondre les fichiers jars dans le client et le serveur. – Fincio

+0

Je suppose que vous avez raison, je ne sais pas vraiment comment les faire correspondre. Il y a un dossier lib dans la racine HornetQ contenant un tas de bocaux. Néanmoins, il n'y a même pas de hornet-core.jar à l'intérieur. –

Répondre

1

Vous avez besoin hornetq-core pot, télécharger et l'utiliser

+0

il a en quelque sorte résolu l'erreur mais maintenant j'obtiens ceci: java.lang.NoSuchMethodError: org.hornetq.api.core.client.ClientSessionFactory.copy() Lorg/hornetq/api/noyau/client/ClientSessionFactory; –

+0

pouvez-vous ouvrir une question différente à ce sujet? – user7294900

+0

fait: https://stackoverflow.com/questions/45214217/hornetq-jms-java-lang-nosuchmethoderror –