2011-06-13 39 views
6

我正在尝试使用嵌入式ActiveMQ代理进行单元测试,如下所述:http://activemq.apache.org/how-to-unit-test-jms-code.html嵌入式ActiveMQ代理需要哪些依赖关系?

我需要包含哪些Maven依赖关系?目前,我刚才这些:

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>6.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.activemq</groupId> 
    <artifactId>activemq-core</artifactId> 
    <version>5.5.0</version> 
</dependency> 

这就是我得到:

java.lang.ClassFormatError: Absent Code attribute in method that 
is not native or abstract in class file javax/jms/JMSException 

当试图实例化一个经纪人:

final BrokerService broker = new BrokerService(); 

我要补充什么别的Maven依赖关系列表? (我不使用春季)

回答

7

解决方法很简单,只需要删除javax:javaee-api依赖。

+1

activemq通过activemq-client - > geronimo-jms对JMS API有一个传递依赖性,最好的答案。 – dardo 2013-04-24 14:01:34

4

可以尝试activemq-all

<dependency> 
    <groupId>org.apache.activemq</groupId> 
    <artifactId>activemq-all</artifactId> 
    <version>5.5.0</version> 
</dependency> 
+0

那么,也许还有一些更优雅的解决方案?其实,结果是一样的。 – yegor256 2011-06-13 19:16:24

+0

不确定你的意思是'雅致':) btw'activemq-all'并不意味着包括所有的AciveMQ罐子。它只是意味着在您的build/class路径中包含他们的'activemq-all-5.5.0.jar',无论如何它都是activemq客户端的正确jar。 – anubhava 2011-06-13 19:19:18

3

将javaee依赖项移动到类路径的末尾。这解决了我的问题。