java - ActiveMQ 的 NoSuchMethodError

标签 java activemq nosuchmethoderror

java.lang.NoSuchMethodError: org.apache.activemq.thread.TaskRunnerFactory.setThreadClassLoader(Ljava/lang/ClassLoader;)V
    at org.apache.activemq.broker.BrokerService.getTaskRunnerFactory(BrokerService.java:1265)
    at org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:2346)
    at org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:2305)
    at org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:1017)
    at org.apache.activemq.broker.BrokerService.getAdminConnectionContext(BrokerService.java:2576)
    at org.apache.activemq.broker.BrokerService.startVirtualConsumerDestinations(BrokerService.java:2717)
    at org.apache.activemq.broker.BrokerService.startDestinations(BrokerService.java:2567)
    at org.apache.activemq.broker.BrokerService.doStartBroker(BrokerService.java:726)
    at org.apache.activemq.broker.BrokerService.startBroker(BrokerService.java:720)
    at org.apache.activemq.broker.BrokerService.start(BrokerService.java:623)
    at com.bp.pnc.publisher.app.PncPublisherApplication.main(PncPublisherApplication.java:77)

我使用的代码是

BrokerService broker = new BrokerService();
TransportConnector connector = new TransportConnector();
connector.setUri(new URI("tcp://localhost:61616"));
broker.addConnector(connector);
broker.start();

问题发生在broker.start()方法上。我使用的是activemq 5.14.0。我正在使用 Java 7。 我查看了文档和发生这种情况的确切行。

this.taskRunnerFactory.setThreadClassLoader(this.getClass().getClassLoader());

最佳答案

发生此错误的原因有多种:

  • 您使用比用于编译源代码的版本更旧的 activemq.jar 运行应用程序
  • 您的应用程序的类路径中有更多 jar,其中之一也包含 activemq 类(因为它本身使用类)。如果该 jar 在您的 activemq.jar 之前加载(即它出现在 acitvemq.jar 的“前面”),则说明正在使用旧版本。

如果是后者,您可以将以下代码放入您的类中(在问题中显示的代码之前)以查看该类从何处加载:

Class clazz = TaskRunnerFactory.class;
String name = clazz.getName().replace('.', '/') + ".class";
String loc = clazz.getClassLoader().getResource(name).toString();
System.out.println(loc);

关于java - ActiveMQ 的 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46133410/

相关文章:

java - 这段逻辑是怎么回事? Java,括号

Java:更好的客户端/服务器消息交换方法?

spring - 嵌入式和独立 activemq 代理之间的区别

java - 未知对象的调用方法

java - 无法启动 Java 客户端 1.5.0 NoSuchMethodException

java - 是否有能够重用 Given, Then 的 BDD java 框架? (具有不同的 When 步骤)

java - CuratorTransaction KeeperErrorCode = NoNode

java - 如何让 HIbernate 获取根实体的所有属性以及关联实体的特定属性?

maven - 运行 integrat 后 activeMQ 的平滑关闭

java - 如何修复 NoSuchMethodError?