【问题标题】:RabbitMQ - Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactoryRabbitMQ - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/slf4j/LoggerFactory
【发布时间】:2017-04-20 13:49:00
【问题描述】:

我正在尝试使用一个简单的 RabbitMQ 示例,它给了我:

“线程“main”中的异常 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory”。

我的构建路径上有 amqp-client-4.0.2.jar、slf4j-1.7.25.zip、slf4j-jdk14.jar.zip 和 log4j-1.2.15.jar。

我的代码非常基础,我尝试了很多关于类似问题的建议,我更改了不同类型的 slfj,但它仍然无法正常工作。

ConnectionFactory factory = new ConnectionFactory();
factory.setHost(HOST);
factory.setUsername(USER);
factory.setPassword(TOKEN);
factory.setVirtualHost(VHOST);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

String message = "Test!";
channel.basicPublish(EXCHANGE_NAME, QUEUE_NAME, null,              message.getBytes());
System.out.println(" [x] Sent '" + message + "' with id=");

channel.close();
connection.close();

完全错误:

Exception in thread "main" java.lang.NoClassDefFoundError:     org/slf4j/LoggerFactory
at com.rabbitmq.client.impl.AMQConnection.<clinit>(AMQConnection.java:49)
at com.rabbitmq.client.ConnectionFactory.<init>(ConnectionFactory.java:91)
at ro.test.RMQ_Send_LocalHost.main(RMQ_Send_LocalHost.java:20)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more"

【问题讨论】:

    标签: java rabbitmq


    【解决方案1】:

    尝试将 slf4j-api 依赖项添加到您的应用程序:

    https://mvnrepository.com/artifact/org.slf4j/slf4j-api

    【讨论】:

    • 感谢您的建议,但不是 Maven 项目。
    • 答案还是一样的,你可以直接下载JAR文件,不使用maven将其包含在你的项目中。
    • 嗯,它确实有效,这意味着它给出了其他错误。那将是: SLF4J:未找到 SLF4J 提供程序。 SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅 slf4j.org/codes.html#noProviders。线程“主”java.net.ConnectException 中的异常:连接被拒绝:连接。我什至只留下了你寄给我的罐子,并删除了其他罐子,就像那个链接上说的那样,它给了我同样的错误。
    • 很高兴看到它有效。您现在遇到的错误是因为没有找到特定的记录器实现。您可以使用 slf4j-simple 库来摆脱这种情况。
    • 感谢您的回答。我解决了。在所有正确的 jars、slfj-api1.8 和 slfj-simple 1.8 之后,它工作了。该问题与 slfj-simple 早期版本的某种不兼容有关。
    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多