5

我已经在运行 CentOS 的 VM 上安装了 0MQ,并且我有一个基于 C 的应用程序可以愉快地使用它。但是,我无法通过 JZMQ 绑定让 Java 应用程序工作。这是我得到的错误:

java -Djava.library.path=/usr/local/lib -jar AidApps.jar receive localhost:9007
Starting the receiver application.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at org.zeromq.ZMQ.<clinit>(ZMQ.java:34)
at com.ijet.Receiver.main(Receiver.java:9)
at com.ijet.Main.main(Main.java:13)

在安装 0MQ 或 JZMQ 期间我没有收到任何错误。我尝试将所有库复制到 /usr/local/lib 中,但这并没有解决任何问题。有任何想法吗?这适用于我的 Mac(所以我知道 JAR 有效),但不适用于 Linux 机器。

4

2 回答 2

10

解决此问题的步骤(归功于 J16-SDiZ):

1) cp /root/zeromq-2.1.11/src/.libs/*.* /usr/local/lib
2) nano /etc/ld.so.conf.d/zmq.conf
3) 添加行/usr/local/lib并保存
4) ldconfig
5) 通过运行验证ldconfig -v | grep zmq
6) 运行 JARjava -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007

注意-Djava.library.path还是需要指定的,指向jzmq.jar文件。

于 2012-06-21T16:38:09.687 回答
7

这是因为 ld.so 无法解析您的libzmq.so.1.0.0.

添加路径并运行/usr/local/lib以重建缓存。/etc/ld.so.configldconfig

于 2012-06-21T16:31:11.463 回答