2012-06-20 28 views
5

Tôi đã cài đặt 0MQ trên máy ảo chạy CentOS và tôi có một ứng dụng dựa trên C vui vẻ làm việc với nó. Tuy nhiên, tôi không thể làm cho ứng dụng Java hoạt động thông qua các ràng buộc JZMQ. Đây là lỗi tôi nhận được:0MQ - Lỗi liên kết không hài lòng JZMQ

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) 

Tôi không gặp bất kỳ lỗi nào khi cài đặt 0MQ hoặc JZMQ. Tôi đã thử sao chép tất cả các thư viện vào/usr/local/lib nhưng không giải quyết được gì. Ý tưởng nào? Điều này làm việc trên máy Mac của tôi (vì vậy tôi biết JAR hoạt động), nhưng không phải trên hộp Linux.

+2

chạy 'ldd/usr/local/lib/libjzmq.so.0.0.0' và cho chúng ta những kết quả –

+0

Dưới đây là đầu ra ' ldd/usr/local/lib/libjzmq.so.0.0.0' 'linux-vdso.so.1 => (0x00007fffa1f31000)' 'libzmq.so.1 => không tìm thấy ' ' libstdC++. so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4f7a17c000) ' 'libm.so.6 => /lib64/libm.so.6 (0x00007f4f79ef8000)' 'libc.so.6 => /lib64/libc.so.6 (0x00007f4f79b68000)' 'libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4f79951000) ' ' /lib64/ld-linux-x86-64.so.2 (0x00000033ca600000) ' –

+2

hiện' libzmq.so.1' tồn tại? Hãy thử 'tập tin libzmq.so.1', nó là một ELF 64-bit? –

Trả lời

7

Điều này là do ld.so không thể giải quyết libzmq.so.1.0.0 của bạn.

Thêm đường dẫn /usr/local/lib đến /etc/ld.so.config và chạy ldconfig để tạo lại bộ nhớ cache.

10

bước để khắc phục vấn đề này (tín dụng đi vào để J16-SDiZ):

1) cp /root/zeromq-2.1.11/src/.libs/*.* /usr/local/lib
2) nano /etc/ld.so.conf.d/zmq.conf
3) Thêm dòng /usr/local/lib và lưu
4) ldconfig
5) Xác nhận bằng cách chạy ldconfig -v | grep zmq
6) Chạy JAR java -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007

Lưu ý rằng -Djava.librar y.path vẫn cần được chỉ định, trỏ nó tới tệp jzmq.jar.

Các vấn đề liên quan