昨天我问了这个问题,结果证明这是一个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依赖的问题吗?或者我的沙箱配置错误了什么?
答案 0 :(得分:4)
你可以在maven repo浏览器中看到http://mvnrepository.com/artifact/javax.jms/jms,工件的大小为0字节。似乎该工件的一些问题或特殊政策。
答案 1 :(得分:4)
jms 1.1 jar在默认maven存储库中不可用 - 您需要添加对其他公共存储库之一的引用(例如,jboss one)
答案 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>