Какие зависимости мне нужны для встроенного ActiveMQ broker?

#java #maven #jms #activemq

#java #maven #jms #activemq

Вопрос:

Я пытаюсь использовать встроенный ActiveMQ broker для модульного тестирования, как описано здесь:http://activemq.apache.org/how-to-unit-test-jms-code.html

Какие зависимости 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? (Я не использую Spring)

Ответ №1:

Решение простое, просто нужно удалить javax:javaee-api зависимость.

Комментарии:

1. activemq имеет транзитивную зависимость от JMS API через activemq-client -> geronimo-jms в любом случае, лучший ответ.

Ответ №2:

можете ли вы попробовать activemq-all :

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

Комментарии:

1. Ну, может быть, есть какое-то другое, более элегантное решение? На самом деле, результат тот же.

2. Не уверен, что вы имеете в виду под elegant 🙂 кстати, activemq-all на самом деле это не означает включение всех jar-файлов AciveMQ. Это просто означает включение их activemq-all-5.5.0.jar в ваш путь сборки / класса, который в любом случае является правильным jar для клиентов activemq.

3. @anubhava, activemq-all означает ли включение всех JAR-файлов ActiveMQ. Это большой «uber-JAR» с помощью плагина Maven Shade, который содержит все классы. Часто бывает лучше получить отдельные JAR-файлы, содержащие нужные вам компоненты.

Ответ №3:

переместил зависимость javaee в конец пути к классу. Это решило мою проблему.