2011-08-22 18 views
25

私はいくつかのC++コンポーネントを使用するJavaプロジェクトの開発に参加しているので、Jacob.dllが必要です。 (Windows 7で)LD_LIBRARY_PATHとは何ですか?どのように使用するのですか?

私は可能な決定のために見て、私がこれまで試したことのない1は、LD_LIBRARY_PATH変数を設定している

.... java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path私はJacob.dllを置くどんなにを得続けます.dllファイルを指しています。

私は経験がほとんどなく、その変数の意味と使用方法を知っていません。私を助けてくれますか?

+0

グーグルを参照してください:あなたは、このようなコマンドライン上でそれを行うことができます...これとdllの話をするリンクをクリックしてください... – Nim

+1

ここに私が以前行ったことがあります:http://www.inonit.com/cygwin/jni/helloWorld/load.html – Nim

+0

そのDLLをロードし、 "PATH"システム変数を使用するか、Windows/System32ディレクトリにdllをドロップする必要があります。 LD_LIBRARY_PATHはウィンドウでは使用されません。 –

答えて

24

通常あなたはJVMのコマンドラインでjava.library.pathを設定する必要があります。

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass 
+0

これが正しい! (+1) –

+0

mmm ...しかし... LD_LIBRARY_PATHとは何ですか? – JPCF

33

LD_LIBRARY_PATHは、ダイナミックライブラリ/共有ライブラリをリンクする際にリンカが探すべきパスを設定するLinux/Unixの環境変数です。

LD_LIBRARY_PATHには、パスのコロンで区切られたリストが含まれており、標準ライブラリパス/libおよび/usr/libを超えるリンカーがこれらのパスを優先します。標準パスは引き続き検索されますが、LD_LIBRARY_PATHのパスのリストが使い尽くされた後にのみ検索されます。

LD_LIBRARY_PATHを使用する最良の方法は、プログラムを実行する直前にコマンドラインまたはスクリプトで設定することです。この方法で新しいLD_LIBRARY_PATHがあなたのシステムの残りの部分から分離されました。

使用例:

$ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path" 
$ ./program 

あなたがWindowsシステム上にあり、.dllは、このパスがあるウィンドウで、リンク時にどのリンカ検索パスに配置する必要があります.dllについて話しているので環境変数PATHによって設定されているので、.dllPATHに追加しても問題ありません。

7

LD_LIBRARY_PATHはLinux固有のもので、動的ローダが共有ライブラリを探すディレクトリを指す環境変数です。

.dllがPATH変数にあるディレクトリを追加してください。 Windowsはこの環境変数のディレクトリリストを自動的に探します。 LD_LIBRARY_PATHはおそらく問題を解決しません(JVMがそれを使用しない限り - それについてはわかりません)。

+0

ありがとう、明らかに私のために働くつもりはありません。そうでなければ、PATH変数に項目を追加することは、私が最初にやったことでした。これまでは運がありません:) – karla

+0

私はJavaの開発者ではありませんが、java.library.path変数(Systemを使用してください。 getProperty())?また、VMを起動するときに、この変数を-Dコマンドラインフラグで設定することもできます。実行時にこれを設定することもできます。 Eclipse imhoで作業している場合、プロジェクトプロパティのBuild Path設定に "Native Library locations"のようなものを設定する方法があります。 –

+2

Linuxではありません!すべてのUnixはこの環境変数を使用します。リンクするのではなく、ロードすることもできます!静的リンクされたライブラリは通常、リンカのコマンドラインで与えられ、動的にロードされたライブラリはLD_LIBRARY_PATHを介して検索されます。例えば、 http://linuxmafia.com/faq/Admin/ld-lib-path.html –

1

まあ、エラーメッセージは何をすべきかを説明します:Jacob.dllはjava.library.pathにに存在するパスを追加します。 "java.library.pathに":

java -Djava.library.path="dlls" ... 

(Jacob.dllは "DLLを" であると仮定したフォルダ)

はまたjava.lang.UnsatisfiedLinkError no *****.dll in java.library.path

+3

JVMの起動後、この方法で 'java.library.path'を設定することはできません。 –

関連する問題