我想创建一个RabbitMQ java客户端。我创建了一个Maven项目是这样的:运行RabbitMQ java客户端
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=rabbitmq-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
里面我加入(如在他们的网站上描述)
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.0</version>
</dependency>
和单主文件我写里面的pom.xml文件:
package com.mycompany.app;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
/**
* Hello world!
*
*/
public class App
{
public static void main(String[] args) throws java.util.concurrent.TimeoutException, java.io.IOException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
}
}
没有RabbitMQ的东西里面的代码我运行
mvn package
java -cp target/rabbitmq-test-1.0-SNAPSHOT.jar com.mycompany.app.App
和代码运行良好。 如果我包括进口和RabitMQ代码,然后,如果我运行像我得到
Exception in thread "main" java.lang.NoClassDefFoundError: com/rabbitmq/client/ConnectionFactory
at com.mycompany.app.App.main(App.java:17)
之前基本上是指“无法找到RabitMQ罐子”对吧? 但在我的第一个mvn package
运行时,maven在某处下载了amqp-client-4.0.0.jar。那么我该如何添加这个jar以及运行?
我试图下载这个瓶子我自己,当我像这样运行:
java -cp target/rabbitmq-test-1.0-SNAPSHOT.jar:target/amqp-client-4.0.0.jar:. com.mycompany.app.App
我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
所以,我下载了这个罐子,当我像这样运行:
java -cp target/rabbitmq-test-1.0-SNAPSHOT.jar:target/amqp-client-4.0.0.jar:target/slf4j-api-1.7.21.jar:. com.mycompany.app.App
我得到:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
我加
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
,但还是一样...... 那么,有什么问题呢?除了我在java上无能为力?
编辑: 在RabbitMQ的日志,我看到:
=INFO REPORT==== 2-Dec-2016::15:18:18 ===
accepting AMQP connection <0.1713.0> (127.0.0.1:55976 -> 127.0.0.1:5672)
当我得到staticLoggerBinder错误。那是什么意思?发生了什么事?
您需要在您的代码在类路径使用的所有JAR文件,当你执行你的主类 – 2016-12-03 19:11:51
@LutzHorn是的,但是这里缺少的罐子是什么? –
包含'org.slf4j.impl.StaticLoggerBinder'的那个。见http://www.slf4j.org/codes。html#StaticLoggerBinder – 2016-12-05 07:41:34