2016-11-05 94 views
1

Import org.zeromq.ZMQ;線程「main」中的異常java.lang.UnsatisfiedLinkError:Eclipse中的java.library.path中沒有jzmq

- 對於上面的導入語句,我在由ZMQ.java文件組成的jzmq master文件夾中使用「org文件夾」。

所以,編譯沒有問題。當我開始運行程序,它顯示例外下面

異常線程「main」 java.lang.UnsatisfiedLinkError中:在java.lang.ClassLoader.loadLibrary(來源不明) 在的java.library.path 沒有jzmq java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at org.zeromq.ZMQ。(ZMQ.java:41) at server.main(Server.java:13 )

我該怎麼辦? 我必須下載哪些軟件包以及哪些導入語句我必須用於Java中的ZeroMQ helloworld示例?

我看到很多人在某處使用libzmq.dll,jzmq.dll和一些jar文件來避免這種異常。但我想要一個明確的答案。

回答

3

這個lib(jzmq)綁定到本地庫libzmq。 如果你不使用libzmq的功能(例如ipc),你最好使用完整的java實現 - jeromqmvnrepo,jeromq git)。它具有幾乎相同的功能。

否則,如果您需要jzmq,您必須正確編譯它。 這是我在Windows x64上編譯它的方式:

要構建庫,您需要IDE Visual Studio 2010或更高版本。在這個例子中,我使用了2013版本。所有工作都在目錄C:\zmq(例如)中執行。

  1. 獲取zeromq,jzmq和libsodium-1.0.10源代碼。
  2. 將zeromq目錄的全部內容複製到C:\zmq
  3. 創建一個目錄C:\zmq\java
  4. 將jzmq目錄的全部內容複製到C:\zmq\java
  5. 創建一個目錄C:\zmq\libsodiumC:\zmq\libsodium
  6. 複製到C:\zmq\libsodium\biñlibsodium-1.0.10-msvc\Win32libsodium-1.0.10-msvc\x64目錄。
  7. 創建目錄C:\zmq\libsodium\src
  8. 複製到C:\zmq\libsodium\src directory libsodium-1.0.10-msvc \ include。

Zeromq。

在Visual Studio中打開目錄C:\zmq\builds\msvc中相應的zeromq解決方案文件。

打開配置管理器。主動配置解決方案 - 選擇DynRelease。主動解決方案平臺 - 選擇x64。

打開項目屬性頁面,轉至配置屬性 - C/C++ - 常規,檢查包含文件目錄的路徑。

然後選擇鏈接器 - 常規,並檢查庫目錄的路徑。

在配置文件C:\zmq\builds\msvc\vs2013\libsodium.import.props正確的路徑在部分。

然後建立它,如果一切正確,你會得到dll在C:\zmq\bin\x64\Release\v120\dynamic目錄。如果不是 - 檢出日誌,進行更改並重建它。


Jzmq。

現在從目錄C:\zmq\java\builds\msvc\

還有在zeromq項目開放的配置管理器打開相應的jzmq解決方案文件,並選擇版本和x64平臺。

打開項目屬性頁面,轉到Configuration Properties - VC++目錄,並檢查JDK的安裝路徑是否正確。 您將有本質上是這樣的:

..\..\..\..\include;C:\Program Files\Java\jdk1.7.0_71\include;C:\Program 
Files\Java\jdk1.7.0_71\include\win32;$(IncludePath) 

還要檢查圖書館目錄(忘了名字)路徑包括路徑內置zeromq庫的目錄。 它看起來就像這樣:

..\..\..\..\bin\x64\Release\v120\dynamic;$(LibraryPath) 

在屬性頁,去配置屬性 - 裝配事件 - 事件之前組裝和檢查屬性「命令提示符」(首先是檢查的文件的路徑中的複製命令)。 它看起來就像這樣:

copy ..\config.hpp "..\..\..\src\main\c++\" 

然後打造專業化jzmq,如果一切是正確的,你會在C:\zmq\java\lib獲取文件。

如果不是 - 檢出日誌,進行更改並重建它。


C:\zmq你只需要斌java\lib目錄,剩下的就被刪除。

將路徑添加到路徑bin\x64\Release\v120\dynamic並運行您的java應用程序-Djava.library.path="path_to_java\lib"

相關問題