RabbitMQ Java 客户端 - Java 依赖项(标准库?)
Posted
技术标签:
【中文标题】RabbitMQ Java 客户端 - Java 依赖项(标准库?)【英文标题】:RabbitMQ Java Client - Java Dependencies (standard libraries?) 【发布时间】: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)。
【问题讨论】:
【参考方案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” .以上是关于RabbitMQ Java 客户端 - Java 依赖项(标准库?)的主要内容,如果未能解决你的问题,请参考以下文章
RabbitMQ Java 客户端 - Java 依赖项(标准库?)