【问题标题】:What is the right Maven dependency for javax.jms.* classes?javax.jms.* 类的正确 Maven 依赖项是什么?
【发布时间】:2011-09-14 03:04:15
【问题描述】:

我需要导入javax.jms.* 类。什么是包含到 Maven 项目中的正确依赖项?我正在尝试javax.jms:jms:1.1,但没有运气(它是 pom,而不是 jar)。

ps。到目前为止,我发现的唯一解决方法是:javax:javaee-api:6.0(来自 Maven Central)。

【问题讨论】:

  • 你在使用 Spring 吗?
  • 不,我没有使用 Spring
  • 取决于。通常这些类是由 JEE 容器提供的,如果您使用的是一个 - 那么 javaee-api 是正确的答案。如果你不这样做,那么你需要使用你使用的 jms 提供者提供的那个。

标签: java maven jms


【解决方案1】:

根据mvnrepository,在你项目的pom中添加的依赖如下:

<dependency>
  <groupId>jms</groupId>
  <artifactId>jms</artifactId>
  <version>1.1</version>
</dependency>

【讨论】:

  • 现在有,@yegor256
【解决方案2】:

我已经成功使用了这个:

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>jms</artifactId>
    <version>1.1</version>
</dependency>

【讨论】:

  • 我看过你的例子in your blog。您从 jboss 存储库中获取此工件,该存储库不再可用 there
  • 我刚刚添加了它,它在主仓库中
【解决方案3】:

Sun 许可证不允许 maven 存储库托管此(和其他)工件。

这里是解释这一点以及你应该做什么的文档......

Maven - Guide to coping with Sun JARs

它说的是您需要手动下载 JAR,然后将其安装到您自己的本地存储库或 nexus 服务器中。

这些工件在 maven Central 中托管的 pom.xml 文件包含有关您可以从何处下载 JAR 的信息。

【讨论】:

  • 这应该是公认的答案,它解释了适用于所有 Sun JAR 的正确 Maven 方法。
  • 这是正确的答案,尽管链接指向的页面已过时(它提供了有关 Maven 2 存储库的误导性信息)。
【解决方案4】:

在 ActiveMQ 以及 Qpid JMS 等其他一些项目中,我们从 Apache Geronimo JAR 中提取 JMS 规范类,1.1 API 在此依赖项中可用:

  <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-jms_1.1_spec</artifactId>
    <version>1.1.1</version>
  </dependency>

例如,对于 JMS 2 API,您需要使用不同的依赖项

  <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-jms_2.0_spec</artifactId>
    <version>1.0-alpha-2</version>
  </dependency>

这些都是 Apache 2.0 许可的依赖项。

正如其他人所指出的那样,这里有另一个未经 Apache 许可的选项。

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>

【讨论】:

  • geronimo 和 javax 有什么区别?
  • geronimo 是 100% 开源和 Apache 许可的。
  • 问题是关于 javax.jms 暗示使用 JMS API 而不是像 ActiveMQ 这样的供应商特定实现
【解决方案5】:

查看 grepcode.com 上列出的依赖项。
我最近才发现这个网站,它太棒了!

http://grepcode.com/search/?query=javax.jms.*

看起来 maven Central 上的 Geronimo jar 应该可以解决您的问题。

【讨论】:

    【解决方案6】:
       <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>6.0</version>
          <scope>provided</scope>
        </dependency>
    

    【讨论】:

    • javax.jms/jms 从download.java.net/maven/2 不再存在,但 javax/javaee-api 存在。我将此添加到我的 pom 中,我的 JMS 依赖问题消失了,我能够成功构建我的应用程序。上面由 Jesse Webb 的 URL 链接发布的关于“Maven - 处理 Sun JAR 的指南”的文章似乎已经过时了。
    • 我最喜欢这个答案,显然,这应该是要使用的“正统”依赖项。
    【解决方案7】:

    转到Maven Search site 并搜索 javax。打开 groupId javax 和 artifactId javaee-api 的最新版本

    当前版本为 7.0 [Maven dependency information]

    【讨论】:

      【解决方案8】:

      如果您只想要 JMS 库,而没有 javaee 的其余部分,请使用以下内容:

      https://mvnrepository.com/artifact/javax.jms/javax.jms-api/2.0.1

      <dependency>
          <groupId>javax.jms</groupId>
          <artifactId>javax.jms-api</artifactId>
          <version>2.0.1</version>
      </dependency>
      

      【讨论】:

        【解决方案9】:

        这对我自己有用

            <dependency>
                <groupId>javax.jms</groupId>
                <artifactId>javax.jms-api</artifactId>
                <version>2.0.1</version>
            </dependency>
        

        【讨论】:

          猜你喜欢
          • 2019-03-10
          • 2015-04-13
          • 2012-09-15
          • 1970-01-01
          • 2015-03-20
          • 1970-01-01
          • 1970-01-01
          • 2011-07-20
          • 2017-06-03
          相关资源
          最近更新 更多