Java ActiveMQ代理工厂找不到故障转移的工厂类
我在尝试使用BrokerFactory创建ActiveMQ代理时遇到此错误:Java ActiveMQ代理工厂找不到故障转移的工厂类,java,eclipse,jar,activemq,pathing,Java,Eclipse,Jar,Activemq,Pathing,我在尝试使用BrokerFactory创建ActiveMQ代理时遇到此错误: java.io.IOException: Could not load failover factory:java.io.IOException: Could not find factory class for resource: META-INF/services/org/apache/activemq/broker/failover at org.apache.activemq.util.IOExcept
java.io.IOException: Could not load failover factory:java.io.IOException: Could not find factory class for resource: META-INF/services/org/apache/activemq/broker/failover
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
at org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:43)
at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:70)
at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
at ...
Caused by: java.io.IOException: Could not find factory class for resource: META-INF/services/org/apache/activemq/broker/failover
at org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.loadProperties(FactoryFinder.java:96)
at org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.create(FactoryFinder.java:58)
at org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:146)
at org.apache.activemq.broker.BrokerFactory.createBrokerFactoryHandler(BrokerFactory.java:41)
... 5 more
这看起来像是路径错误或类似的东西,我只是无法找出根本原因
这是导致它的代码:
URI brokerUri = new URI(bean.getBrokerConfigUrl());
broker = BrokerFactory.createBroker(brokerUri);
以下是我正在呼叫的url:
failover:(tcp://internalUrl.net:port#,tcp://internalUrl.net:port#)?randomize=false&timeout=30000&jms.redeliveryPolicy.maximumRedeliveries=-1&jms.prefetchPolicy.all=0
那么这可能是一个路径错误吗?我没有包括一个必需的罐子吗?url的格式是否不正确?我在这里迷路了
编辑:添加了赏金这不是类路径或jar问题。根据活动MQ文档,BrokerFactory仅支持xbean、broker或属性的URI,不支持故障转移URI 以下两个文档将为您提供有关设置和配置代理工厂的更多信息
您是如何运行此代码的?从独立Java或在某个容器中还是什么?另外,请务必编写您使用的软件的版本,因为这对于能够提供帮助非常重要。对不起!我在eclipse中运行和作为jar(由maven在eclipse中生成)运行时都会遇到这个错误。使用activemq 5.8.0,然后它的eclipse生成一个jar,这就是问题所在。JAR必须包含已发布的ActiveMQ JAR包含的一些元文件。我只是将JAR解包以进行检查,虽然这些元文件在那里,但它们不在meta-INF/services/org/apache/ActiveMQ/broker/中,就像代理工厂正在查找的错误一样。相反,它们位于META-INF/services/org/apache/activemq/transport/中。你知道为什么BrokerFacotry会在那里找吗?我到处找,但我找不到解决这个问题的办法,也找不到为什么会这样。嗨,蒂姆,这是个好发现。我也有同样的问题,第一次没有发现,但是错误声明…/activemq/transport/broker,而资源只有../activemq/broker/broker-一个修复方法可能是解压、移动资源并重新压缩,但这很糟糕。