2013-06-24 149 views
3

我想在我的应用程序中嵌入zeroMQ,我跟着this guideline安装ZMQ,所以在这里一切正常。 我在我的应用程序这行代码:ZMQ - libzmq.so.3:无法打开共享目标文件:没有这样的文件或目录

ZMQ.Context m_context = ZMQ.context(1); 

,但上面的代码行引发异常如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/libjzmq-812339378390536247.lib: libzmq.so.3: cannot open shared object file: No such file or directory 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825) 
    at java.lang.Runtime.load0(Runtime.java:792) 
    at java.lang.System.load(System.java:1059) 
    at org.zeromq.EmbeddedLibraryTools.loadEmbeddedLibrary(EmbeddedLibraryTools.java:136) 
    at org.zeromq.EmbeddedLibraryTools.<clinit>(EmbeddedLibraryTools.java:22) 
    at org.zeromq.ZMQ.<clinit>(ZMQ.java:38) 
    at com.castaclip.verticals.Messenger.<init>(Messenger.java:125) 
    at com.castaclip.verticals.PushMessenger.<init>(PushMessenger.java:30) 
    at com.castaclip.verticals.pushserver.App.setup(App.java:60) 
    at com.castaclip.verticals.pushserver.App.main(App.java:41) 

的误差正好指向this line

P.S:它有点难以完全解释这个问题..如果您有任何问题PLZ让我知道。谢谢。

+0

所以你建立核心zmq,libzmq和jzmq没有错误?你确认'.so'库文件生成了吗?当你运行java时,你是否设置了'LD_LIBRARY_PATH',以便你的程序可以找到库文件? – raffian

+0

是的,所有'.so'库文件都生成了,并且库路径也很好看:'〜$ echo $ LD_LIBRARY_PATH /usr/local/lib' – tokhi

回答

16

如果你已经成功地构建libzmq和jzmq的顺序,我会跑:

$ sudo ldconfig 

更新系统库高速缓存。然后,我会检查是否定义了LD_LIBRARY_PATH像Raffian提到的,或明确设置为像您的库路径:

$ java -Djava.library.path=/usr/lib:/usr/local/lib 
+0

我已经这样做了:'〜$ echo $ LD_LIBRARY_PATH/usr/local/lib' – tokhi

+0

@stsd注销,然后重新登录。有时'ldconfig'没有正确同步,所以需要启动。 http://stackoverflow.com/questions/12935623/error-installing-zeromq/16522807#16522807 – raffian

+1

@Trevor Bernard谢谢你,你让我的一天! :-) ldconfig为我解决了这个问题。 – Serg

1

最后,我想弄清楚的问题。 我正在使用zeromq-2.1.10,这是问题的一部分。

所以我安装zeromq-3.2.3从源头上解决问题。

0

我遇到了这个消息的神秘实例时我:

# java -Djava.library.path=/usr/hf/zmq/lib/ -cp '/usr/hf/lib/*:.' com.zmqtest.MA 
Exception in thread "main" 
java.lang.UnsatisfiedLinkError: /usr/hf/zmq/lib/libjzmq.so: 
libzmq.so.3: cannot open shared object file: No such file or directory 

其中固定有一个解决方案,让没有任何意义对我说:

# LD_LIBRARY_PATH=/usr/hf/zmq/lib/ java -Djava.library.path=/usr/hf/zmq/lib/ -cp '/usr/hf/lib/*:.' com.zmqtest.MA 

奇怪。

+0

我有同样的问题。它在设置LD_LIBRARY_PATH变量时也起作用,尽管我使用的是具有相同值的-Djava.library.path。 JZQM有点烦人,因为它真的希望你在/ usr/local/lib中有你的库,所以你不能真正在同一台机器上使用多个版本。 ZMQ不会出现此问题:通过在构建RPM时定义正确的参数,可以将多个版本共同放置在一台机器上。 – jplandrain

相关问题