我在运行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机器。
答案 0 :(得分: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)运行JAR java -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007
请注意,仍然需要指定-Djava.library.path,将其指向jzmq.jar文件。
答案 1 :(得分:7)
这是因为ld.so无法解析您的libzmq.so.1.0.0
。
将路径/usr/local/lib
添加到/etc/ld.so.config
并运行ldconfig
以重建缓存。