2011-06-13 12 views
6

Estoy tratando de utilizar el intermediario ActiveMQ incorporado para la prueba de la unidad, como se explica aquí: http://activemq.apache.org/how-to-unit-test-jms-code.html¿Qué dependencias necesito para el intermediario ActiveMQ incorporado?

¿Qué dependencias Maven necesito incluir? Por el momento tengo sólo estos:

<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> 

Esto es lo que estoy haciendo:

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

Al intentar crear una instancia de un corredor:

final BrokerService broker = new BrokerService(); 

¿Qué más debo añadir a la lista de las dependencias de Maven? (Estoy usando no primavera)

Respuesta

7

La solución es simple, sólo hay que eliminar la dependencia javax:javaee-api.

+1

activemq tiene una dependencia transitiva en la API JMS a través de activemq-client -> geronimo-jms de todos modos, la mejor respuesta. – dardo

4

Se puede tratar activemq-all:

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

Bueno, tal vez hay alguna otra solución más elegante? En realidad, el resultado es el mismo. – yegor256

+0

No estoy seguro de lo que quiere decir con 'elegant' :) btw' activemq-all' realmente no significa que incluya todos los archivos jar de AciveMQ. Simplemente significa incluir su 'activemq-all-5.5.0.jar' en su ruta de compilación/clase, que es el jar derecho para los clientes de activemq de todos modos. – anubhava

3

movió la dependencia javaee al final de la ruta de la clase. Esto resolvió mi problema.

Cuestiones relacionadas