2013-06-24 194 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

相關問題