【问题标题】:HornetQ - java.lang.NoClassDefFoundError: Lorg/hornetq/core/logging/Logger;HornetQ - java.lang.NoClassDefFoundError: Org/hornetq/core/logging/Logger;
【发布时间】:2017-12-24 15:53:17
【问题描述】:

我正在尝试从一本书(HornetQ Messaging Developers Guide)中运行一个简单的 HornetQ 示例,但收到错误消息。我没有使用 maven,因为我想紧贴书中给出的示例。 HornetQ Standalone 服务器在命令行中正常启动。我只是想向 HonretQ 服务器发送消息。

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();





    }

}

即使我添加了书中提到的所有罐子,我仍然收到以下错误:

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

我还添加了一堆我发现与此主题相关的其他 jar,但没有解决问题。

产生错误是否有原因?

【问题讨论】:

  • 可能两个类路径都有不同版本的 jar - 这可以解释 NoClassDefFound 。序列化/反序列化失败。尝试匹配客户端和服务器中的 jars。
  • 我猜你是对的,但我真的不知道如何匹配它们。 HornetQ 根目录中有一个 lib 文件夹,其中包含一堆罐子。但是里面甚至没有 hornet-core.jar。

标签: java jar jms hornetq


【解决方案1】:

你需要hornetq-corejar,下载使用

【讨论】:

  • 它以某种方式解决了错误,但现在我得到了这个:java.lang.NoSuchMethodError: org.hornetq.api.core.client.ClientSessionFactory.copy()Lorg/hornetq/api/core/client/ ClientSessionFactory;
  • 你能提出一个不同的问题吗?
猜你喜欢
  • 2020-10-17
  • 2017-03-10
  • 1970-01-01
  • 2010-11-26
  • 2019-06-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
相关资源
最近更新 更多