2012-06-20 11 views
5

He instalado 0MQ en una máquina virtual que ejecuta CentOS y tengo una aplicación basada en C que está felizmente trabajando con ella. Sin embargo, no puedo hacer que la aplicación Java funcione a través de enlaces JZMQ. Aquí está el error que consigo:0MQ - JZMQ error de enlace insatisfecho

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) 

no consigo ningún error durante la instalación de cualquiera de 0MQ o JZMQ. Intenté copiar todas las bibliotecas en/usr/local/lib, pero eso no solucionó nada. ¿Algunas ideas? Esto funciona en mi Mac (así que sé que funciona el JAR), pero no en el cuadro de Linux.

+2

ejecutar 'ldd/usr/local/lib/libjzmq.so.0.0.0' y nos dará la salida –

+0

Aquí está la salida ' ldd/usr/local/lib/libjzmq.so.0.0.0' 'linux-vdso.so.1 => (0x00007fffa1f31000)' 'libzmq.so.1 => no encontrado' ' 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

¿existe' libzmq.so.1'? Pruebe 'file libzmq.so.1', ¿es un ELF de 64 bits? –

Respuesta

7

Esto se debe a que ld.so no puede resolver su libzmq.so.1.0.0.

Agregue la ruta /usr/local/lib a /etc/ld.so.config y ejecute ldconfig para volver a generar la caché.

10

pasos para solucionar este problema (crédito va a a J16-SDiZ):

1) cp /root/zeromq-2.1.11/src/.libs/*.* /usr/local/lib
2) nano /etc/ld.so.conf.d/zmq.conf
3) Añadir línea /usr/local/lib y guardar el
4) ldconfig
5) Verificar mediante la ejecución de ldconfig -v | grep zmq
6) ejecutar el JAR java -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007

Tenga en cuenta que la -Djava.librar y.path aún necesita ser especificado, apúntelo al archivo jzmq.jar.

Cuestiones relacionadas