简体   繁体   English

Java应用程序中的zeroMQ UnsatisfiedLinkError

[英]zeroMQ UnsatisfiedLinkError in java application

i have written a application that communicates via zeroMQ with another application. 我已经编写了一个通过ZeroMQ与另一个应用程序进行通信的应用程序。 On my development machine running Ubuntu 13 is all well and working. 在运行Ubuntu 13的开发机器上运行正常。

I do have zeroMQ 4.4.0 installed, also the jzmq java binding did compile without errors. 我确实安装了zeroMQ 4.4.0,而且jzmq java绑定确实编译没有错误。

But on our testing/production server i get this. 但是在我们的测试/生产服务器上我得到了。 The application starts up and from requestInit() it tries to request it's configuration from the main configuration manager over zeroMQ. 应用程序启动,并从requestInit()尝试通过zeroMQ向主配置管理器请求其配置。

bs@server-01:~/$ java -Djava.library.path=/usr/local/lib -jar /home/bs/opengraphchild/jar/opengraph.jar 5000 opengraph1
Params = 5000
Params = opengraph1
Starting Test service ...
Running
TestService.requestInit()
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.zeromq.ZMQ$Socket.nativeInit()V
    at org.zeromq.ZMQ$Socket.nativeInit(Native Method)
    at org.zeromq.ZMQ$Socket.<clinit>(ZMQ.java:521)
    at org.zeromq.ZMQ$Context.socket(ZMQ.java:451)
    at bs.core.service.GenericService.initZmqClient(GenericService.java:41)
    at bs.service.opengraph.OpenGraph.requestInit(OpenGraph.java:131)
    at bs.service.opengraph.OpenGraph.run(OpenGraph.java:62)
    at bs.service.opengraph.OpenGraphRunner.main(OpenGraphRunner.java:13)

I could not find anything relevant to my issue so i'm asking you guys. 我找不到与我的问题有关的任何东西,所以我问你们。 Please help :( [don't know if you need to see sourcecode, since it's working on my local machine, but i can add it] 请帮助:( [[不知道您是否需要查看源代码,因为它在我的本地计算机上运行,​​但是我可以添加它]

output of ldconfig -v | grep zmq ldconfig -v | grep zmq输出ldconfig -v | grep zmq ldconfig -v | grep zmq

/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu' given more than once
    libzmq.so.3 -> libzmq.so.3.1.0
    libjzmq.so.0 -> libjzmq.so.0.0.0
    libzmq.so.1 -> libzmq.so.1
/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied

output of ldd /usr/local/lib/libzmq.so : ldd /usr/local/lib/libzmq.so输出:

linux-vdso.so.1 =>  (0x00007fffcdf7c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f565a105000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5659ee8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5659be7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5659827000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5659611000)
/lib64/ld-linux-x86-64.so.2 (0x00007f565a56b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5659314000)

output of ldd /usr/local/lib/libjzmq.so ldd /usr/local/lib/libjzmq.so输出

linux-vdso.so.1 =>  (0x00007fffcf322000)
libzmq.so.3 => /usr/local/lib/libzmq.so.3 (0x00007fe7499a8000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe7496a8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe7492e7000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe7490df000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe748ec2000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe748cab000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe7489af000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe749e0c000)

This is what I got to make it work on Windows, OS X and Ubuntu: 这就是我使其能够在Windows,OS X和Ubuntu上运行的原因:

http://sourceforge.net/p/jalgo/code-0/HEAD/tree/trunk/src/org/aso/algo/messaging/bus/zmq/ZMQLoader.java#l17 http://sourceforge.net/p/jalgo/code-0/HEAD/tree/trunk/src/org/aso/algo/messaging/bus/zmq/ZMQLoader.java#l17

The bus package also contains pub/sub establishment so feel free to refer to it. 总线软件包还包含pub / sub场所,因此可以随时参考。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM