【问题标题】:HornetQ JMS: java.lang.NoSuchMethodErrorHornetQ JMS:java.lang.NoSuchMethodError
【发布时间】:2017-12-26 02:55:15
【问题描述】:

不幸的是,在尝试让 JMS 服务与 HornetQ 一起使用时,我正在从错误消息到错误消息运行。先前的错误与缺少 core.jar 文件有关。 Prior Error

毕竟,我正在尝试将一个简单的生产者/消费者示例实现为 jms 服务。 (基于“HornetQ Messaging 开发者指南”)

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.NoSuchMethodError: org.hornetq.api.core.client.ClientSessionFactory.copy()Lorg/hornetq/api/core/client/ClientSessionFactory;
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:612)
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:116)
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:111)
    at chapter01.ECGMessageConsumerProducerExample.main(ECGMessageConsumerProducerExample.java:33)

我预计该错误是由服务器使用的 jar 与客户端使用的 jar 不匹配引起的。但是由于我是程序员菜鸟,我真的不知道需要哪些具有合适版本的确切jar。

【问题讨论】:

    标签: jar jms nosuchmethoderror


    【解决方案1】:

    尝试将 NettyConnectorFactory 定义为连接器,如 jboss reference

    例如在 hornetq-configuration.xml 文件中:

    <connectors>
        <connector name="netty">
            <factory-class>
                org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
            </factory-class>
            <param key="port" value="5446"/>
        </connector>
    </connectors>    
    

    【讨论】:

    • 连接器已在非集群独立配置文件中定义:org.hornetq.core.remoting.impl.netty .NettyConnectorFactory
    猜你喜欢
    • 2017-12-24
    • 2012-10-29
    • 2011-10-21
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多