22

PyDev Jython プロジェクトでコンパイル済みの .jar Java ライブラリを使用しようとしています。

.jar を PYTHONPATH に正常に追加し、オートコンプリートでコーディングを開始できました。

ライブラリには .dll 拡張子も必要なjavaHeclib.dllので、それをプロジェクトの外部ライブラリ セクションに追加しました。

ライブラリを正常にインポートできますが、その関数のいずれかにアクセスしようとするとエラーが発生します。

java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

VM 引数を実行構成に追加しましたが、うまくいきませんでした。

-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"

上記を使用して、コマンドラインからライブラリを問題なく実行できますjava.library.path

PyDev コンソールで実験を行ったところ、相対パスではなく絶対パスで .dll 拡張子をロードできることに気付きました。

>>> import java.lang
>>> java.lang.System.load('Y:/path/to/javaHeclib.dll')
>>> java.lang.System.loadLibrary('javaHeclib')
Traceback (most recent call last):
  File "<console>", line 1, in ?
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

残念ながら、ライブラリはSystem.loadLibrary上記の呼び出しを使用しており、そのソースにアクセスできません。

なぜ私の中にjavaHeclib.dllないのjava.library.pathですか?

編集

を dll を含むディレクトリに設定しjava.library.pathても、.dll を使用してロードできませんでしたSystem.loadLibrary

-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"

(スラッシュを使用しても違いはありませんでした。) でデフォルトの VM 引数を変更しようとしましたがeclipse.ini、うまくいきませんでした:

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:\path\to\dll\;${env_var:PATH}"
4

3 に答える 3

51

私はより良い方法は次のとおりだと思います:

  1. プロジェクトの下にdllなどのフォルダを作成します。
  2. すべてのdllファイルをコピーしてこのフォルダに貼り付けます。
  3. プロジェクト->プロパティ->Javaビルドパス->ソースで、ソースの詳細をクリックして展開します。
  4. ネイティブライブラリの場所が表示されたら、クリック/ハイライトします。
  5. 次に、右側の[編集]をクリックし、ワークスペースをもう一度クリックします。プロジェクトの下にdllフォルダが表示されます。
  6. それを選択し、[OK]、[OK]をクリックします。dllがネイティブライブラリの場所に追加されていることがわかります。

それでおしまい。構成を手動で変更する必要はありません。

Javaビルドパス構成

于 2013-02-01T18:35:27.740 に答える
11

私はこれを機能させました。

今後の参考のために:

必要な dll が にあるとしY:\path\to\dlls\lib\ます。次に、実行構成の作業ディレクトリをY:\path\to\dlls\に設定し、VM 引数を include に設定します-Djava.library.path=lib

それだけです。これで動作するはずです。以前は絶対パスの指定が機能しなかった理由はわかりませんがjava.library.path、作業ディレクトリを設定することで機能したようです。

おそらく、私が使用している特定のライブラリに特有のものです(または、ライブラリがオンになっているドライブとは異なるドライブからEclipseが実行されています)...

于 2012-06-20T22:13:11.457 に答える