2012-06-20 15 views
5

Ich habe 0MQ auf einer VM mit CentOS installiert und ich habe eine C-basierte Anwendung, die glücklich damit arbeitet. Ich kann die Java-Anwendung jedoch nicht über JZMQ-Bindungen arbeiten lassen. Hier ist der Fehler, den ich bekommen:0MQ - JZMQ Unzufriedener Linkfehler

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) 

Ich erhalte keine Fehler bei der Installation von entweder 0MQ oder JZMQ. Ich habe versucht, alle Bibliotheken in/usr/local/lib zu kopieren, aber das hat nichts gelöst. Irgendwelche Ideen? Das funktioniert auf meinem Mac (daher weiß ich, dass das JAR funktioniert), aber nicht auf der Linux-Box.

+2

run 'ldd/usr/local/lib/libjzmq.so.0.0.0' und geben Sie uns die Ausgabe –

+0

Hier ist der Ausgang ' ldd/usr/local/lib/libjzmq.so.0.0.0' 'linux-vdso.so.1 => (0x00007fffa1f31000)' 'libzmq.so.1 => nicht gefunden' '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

existiert' libzmq.so.1'? Versuchen Sie 'Datei libzmq.so.1', ist es eine 64-Bit-ELF? –

Antwort

7

Dies ist, weil ld.so kann Ihre libzmq.so.1.0.0 nicht auflösen.

Fügen Sie den Pfad /usr/local/lib zu /etc/ld.so.config hinzu und führen Sie ldconfig aus, um den Cache neu zu erstellen.

10

Schritte, um dieses Problem zu beheben (Kredit geht an J16-SDiZ):

1) cp /root/zeromq-2.1.11/src/.libs/*.* /usr/local/lib
2) nano /etc/ld.so.conf.d/zmq.conf
3) In Zeile /usr/local/lib und
4) ldconfig
5) speichern Stellen Sie sicher, von ldconfig -v | grep zmq
6) Führen Sie die JAR-Lauf java -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007

Beachten Sie, dass die -Djava.librar y.path muss noch angegeben werden, verweisen Sie auf die Datei jzmq.jar.