【问题标题】:What dependencies do I need for embedded ActiveMQ broker?嵌入式 ActiveMQ 代理需要哪些依赖项?
【发布时间】:2011-09-14 04:03:50
【问题描述】:

我正在尝试使用嵌入式 ActiveMQ 代理进行单元测试,如下所述: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)

【问题讨论】:

    标签: java maven jms activemq


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      解决方法很简单,只需要去掉javax:javaee-api的依赖即可。

      【讨论】:

      • activemq 通过 activemq-client -> geronimo-jms 对 JMS API 有传递依赖,最好的答案。
      【解决方案3】:

      你可以试试activemq-all:

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

      【讨论】:

      • 好吧,也许还有其他更优雅的解决方案?其实结果是一样的。
      • 不确定elegant 是什么意思:) 顺便说一句,activemq-all 并不意味着包括所有的 AciveMQ 罐子。它只是意味着将他们的activemq-all-5.5.0.jar 包含在您的构建/类路径中,无论如何这对于 activemq 客户端来说都是正确的 jar。
      • @anubhava, activemq-all 确实意味着包括所有 ActiveMQ JAR。它是一个包含所有类的 Maven Shade 插件的大“uber-JAR”。获取包含所需组件的单个 JAR 通常是一个更好的主意。
      猜你喜欢
      • 2016-09-28
      • 2018-09-20
      • 2013-08-29
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2017-01-23
      相关资源
      最近更新 更多