2011-06-13 79 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依賴項移動到類路徑的末尾。這解決了我的問題。