依赖的Maven错误:缺少工件

时间:2012-02-07 14:24:13

标签: java maven dependencies

昨天我问了这个问题,结果证明这是一个Maven问题。虽然我能够找到一种解决方法(使用Geronimo而不是Java JMS)但我无法弄清楚Java JMS解决方案无法正常工作的原因。

我不想重复问题,但我不相信这是一个骗局,因为这是一个完全不同的原始问题。

所以,我试图让JMS使用我的应用程序,这样我就可以将消息推送到本地队列。在我的Maven pom.xml中,我添加了以下依赖项声明:

<dependencies>
    <dependency>
        <groupId>javax.jms</groupId>
        <artifactId>jms</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

然后立即获得(红色)突出显示的错误(使用Eclipse )说明:

  

缺少工件javax.jms:jms:jar:1.1

当我用另一个JMS API(例如Geronimo)替换它时,错误消失了。这是引用(Java)JMS依赖的问题吗?或者我的沙箱配置错误了什么?

3 个答案:

答案 0 :(得分:4)

你可以在maven repo浏览器中看到http://mvnrepository.com/artifact/javax.jms/jms,工件的大小为0字节。似乎该工件的一些问题或特殊政策。

答案 1 :(得分:4)

jms 1.1 jar在默认maven存储库中不可用 - 您需要添加对其他公共存储库之一的引用(例如,jboss one)

这个答案有详细说明 https://stackoverflow.com/a/5272660/672586

答案 2 :(得分:2)

由于log4j传递依赖性,可能会出现错误。您可以排除下面给出的依赖关系。

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
   <exclusions>
    <exclusion>
        <artifactId>jms</artifactId>
        <groupId>javax.jms</groupId>
    </exclusion>
    <exclusion>
        <artifactId>jmxri</artifactId>
        <groupId>com.sun.jmx</groupId>
    </exclusion>
    <exclusion>
        <artifactId>jmxtools</artifactId>
        <groupId>com.sun.jdmk</groupId>
        </exclusion>
    </exclusions>
</dependency>