54

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

java.lang.UnsatisfiedLinkError: no JacobDB in java.library.pathJacob.dllをどこに置いても取得し続けます。

考えられる決定を探しましたが、これまで試したことのないものはLD_LIBRARY_PATH、.dllファイルをポイントして変数を設定することです。

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

4

6 に答える 6

100

LD_LIBRARY_PATHLinux / 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

.dllあなたがWindowsシステム上に.dllいて、リンカーがリンク時に検索するパスに配置する必要があると話しているので、Windowsでは、このパスは環境変数によって設定されますPATH。これをに追加する.dllPATH、正常に機能するはずです。

于 2011-08-22T13:19:04.400 に答える
19

java.library.path通常、JVMのコマンドラインで次のように設定する必要があります。

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
于 2011-08-22T13:24:24.617 に答える
14

LD_LIBRARY_PATHLinux固有であり、ダイナミックローダーが共有ライブラリを検索するディレクトリを指す環境変数です。

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

于 2011-08-22T13:22:11.103 に答える
4

LD_LIBRARY_PATH使用可能な動的ライブラリと共有ライブラリをチェックするためにアクセスされるデフォルトのライブラリパスです。これはLinuxディストリビューションに固有のものです。

PATHリンカがリンク時に可能な実装をチェックするのは、Windowsの環境変数に似ています。

于 2018-07-04T07:29:26.677 に答える
2

.so私のエラーは、サービスで必要なファイルが見つからないことにも関連していました。LD_LIBRARY_PATH必要なライブラリを検索するために、リンカーが取得したパスに優先順位を付けるために変数を使用しました。

サービスと.soファイルの両方をフォルダーにコピーし、次のようにLD_LIBRARY_PATH変数にフィードしました

LD_LIBRARY_PATH=. ./service

同じフォルダにあるので、上記のコマンドを実行しましたが、機能しました。

于 2018-07-04T05:59:48.530 に答える
1

エラーメッセージは、何をすべきかを示しています。Jacob.dllが存在するパスをjava.library.pathに追加します。次のようにコマンドラインでこれを行うことができます。

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

(Jacob.dllが「dlls」フォルダーにあると仮定します)

java.library.pathのjava.lang.UnsatisfiedLinkErrorno*****。dllも参照してください。

于 2011-08-22T13:25:56.880 に答える