【问题标题】:RabbitMQ Java Client - Java Dependencies (standard libraries?)RabbitMQ Java 客户端 - Java 依赖项(标准库?)
【发布时间】:2013-10-16 15:00:22
【问题描述】:

我需要将 RabbitMQ 与另一个在 Java 上运行的系统集成。所以我去了official website,下载了这个包并将它复制到我的类路径中。然后我跟着basic tutorial,我验证了导入外部库的工作。

我现在面临的问题对于 Java 开发人员来说可能很容易解决:我必须导入哪些标准 Java 库才能使以下代码工作?

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
...
ConnectionFactory factory = new ConnectionFactory();

不会遇到这样的导入错误:

Line 51, Column 18: No applicable constructor/method found for actual parameters "java.lang.String"; 
candidates are: "void com.rabbitmq.client.ConnectionFactory.setPort(int)"

我尝试过这样的事情,但我不知道它在 Java 中是如何工作的,所以我想澄清一下。例如,什么时候应该使用星号?

import java.lang.String;
import java.lang.String.*;

顺便说一下,我尝试集成 RabbitMQ 的系统是 Pentaho Data Integration(又名 Kettle)。

【问题讨论】:

    标签: java rabbitmq kettle


    【解决方案1】:

    首先,删除您的 java.lang 导入。

    其次,使用int 而不是String 调用setPort,如API 中所述。

    【讨论】:

      【解决方案2】:

      只在类路径中包含 amqp-client-${version} jar 就足够了。 Astreix 用于从包中导入所有类。 java中的类名以大写字母开头,而包名则以小写字母开头。所以,java.lang 是一个包,而 String 是一个类。默认情况下,java.lang 包的所有类都导入到 Java 程序中,无需编写import java.lang.String; or import java.lang.*;

      【讨论】:

      • 你的意思是我应该在“rabbitmq-client.jar”(版本 3.1.5)之外添加它吗?当我阅读 [网站] (rabbitmq.com/java-client.html) 时,我认为它已包含在内。顺便说一句,我很确定“rabbitmq-client.jar”在类路径中,因为如果我把它拿出来,我会得到一个不同的错误:无法加载导入的类“com.rabbitmq.client.Connection” .
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多