2016-11-05 14 views
1

インポートorg.zeromq.ZMQ;スレッド "main"の例外java.lang.UnsatisfiedLinkError:Eclipseのjava.library.pathにjzmqがありません

- 上記のimport文については、ZMQ.javaファイルで構成されるjzmq masterフォルダに "org folder"を使用しています。

- コンパイルに問題はありません。 java.lang.ClassLoader.loadLibraryでjava.library.pathに で無jzmq(不明なソース) で:私はプログラムの実行を開始すると、それは例外

スレッドの例外「メイン」の下に示しています。java.lang.UnsatisfiedLinkError java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(不明なソース) (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ビジュアルスタジオ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\libsodium\bi N libsodium-1.0.10-msvc\Win32libsodium-1.0.10-msvc\x64ディレクトリにディレクトリC:\zmq\libsodiumC:\zmq\libsodium
  6. コピーを作成します。
  7. ディレクトリC:\zmq\libsodium\srcを作成します。
  8. C:\zmq\libsodium\src directory libsodium-1.0.10-msvc \ includeにコピーします。

Zeromq。

C:\zmq\builds\msvcディレクトリから適切なzeromqソリューションファイルをVisual Studioで開きます。

構成マネージャを開きます。アクティブな構成ソリューション - DynReleaseを選択します。アクティブなソリューションプラットフォーム - x64を選択します。

プロジェクトプロパティページを開くには、設定プロパティ - C/C++ - 一般に移動し、インクルードファイルディレクトリのパスを確認します。

次に、リンカー - 一般を選択し、ライブラリディレクトリのパスを確認します。

設定ファイルC:\zmq\builds\msvc\vs2013\libsodium.import.propsセクションの正しいパス。

それから、すべてが正しいとすれば、C:\zmq\bin\x64\Release\v120\dynamicディレクトリにdllが得られます。そうでない場合 - ログをチェックアウトし、変更して再構築します。


jzmq。

は今ディレクトリC:\zmq\java\builds\msvc\

からだけでなくzeromqプロジェクトオープンConfiguration Managerの適切なjzmqソリューションファイルを開き、リリースおよびx64プラットフォームを選択します。

[プロジェクトプロパティを開く]ページで、[設定プロパティ - VC++ディレクトリ]に移動し、JDKがインストールされているパスが正しいことを確認します。 あなたは、それ自体がこのようなものになります。

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

また、ライブラリカタログは、(その名前を忘れてしまった)ことを確認してくださいパスはzeromq建てのlibsとディレクトリへのパスが含まれています。 それは次のようになります。

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

をプロパティページで、構成プロパティに行く - アセンブリイベント - 組立前にイベントとプロパティ「コマンドプロンプト」をチェック(最初のすべてのチェックのパスのファイルにコピーコマンドで)。 それは次のようになります。すべてが正しかった場合

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

その後BUID jzmq、あなたはC:\zmq\java\lib内のファイルを取得します。

ログをチェックアウトしていない場合は、変更して再構築してください。あなただけのbinディレクトリjava\libが必要C:\zmq


、残りを除去することができます。

パスにパスbin\x64\Release\v120\dynamicを追加して、javaアプリケーションを実行します。-Djava.library.path="path_to_java\lib"

関連する問題