#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 в конец пути к классу. Это решило мою проблему.