ActiveMQ的NoSuchMethodError

时间:2017-09-09 17:40:26

标签: java activemq nosuchmethoderror

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

我正在使用的代码是

var sumArray = [{"sum": 1}, {"sum": 2}, {"sum": 3}, {"sum": 4}, {"sum": 5}, {"sum": 6}]
var color    = ["#FF0F00", "#FF6600", "#FF9E01"];

var i = 0;

var combinedObj = sumArray.map(function(obj) {
  var me = Object.assign({}, obj);
  i = i === color.length ? 0 : i;
  me.color = color[i++];
  return me;
});

console.log( JSON.stringify( combinedObj, 0, 4 ) )

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

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

1 个答案:

答案 0 :(得分:0)

出现此错误的原因不同:

  • 使用较旧的activemq.jar运行应用程序而不是用于编译源代码的应用程序
  • 您的应用程序在其类路径中有更多jar,其中一个包含activemq类(因为它自己使用类)。如果在你的activemq.jar之前加载了那个jar(即它出现在"在acitvemq.jar的前面和#34;)旧的版本正在使用中。

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

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