3

I am working with a third party library in a project, and it includes two .dll files and a .jar fie to provide a JNI Wrapper. The test project that the third party vendor included in the .jar file can be called using the following command:

java -cp product.jar com.company.samples.product.Test

This works just fine, as long as the .jar and both of the dll's are in the same directory.

In my project I have placed the jar file and the dll's in the same directory, and then referenced the jar file as a library in IntelliJ Idea, but this causes the library to be unable to find the dll's. Is there a way that I can tell Idea where the dll's are so it can output them in the same directory as the jar file during execution?

4

3 に答える 3

8

IntelliJ で、 .dllが見つかったディレクトリを追加する場合は、次のようにします。

1) プロジェクト構造ダイアログを開きます (例: Ctrl+Shift+Alt+S )。

2) ダイアログの左側のペインで、[モジュール] を選択します。

3) 右側のペインで、目的のモジュールを選択します。

4) ダイアログの右側にある [モジュール] ページで、[依存関係] タブを選択します。

5) [依存関係] タブで、[+] をクリックし、Jar またはディレクトリを選択します。

6) 開いたダイアログで、必要なファイルとフォルダーを選択します。これらは、個々の .class および .java ファイル、そのようなファイルを含むディレクトリおよびアーカイブ (.jar および .zip)、およびJava ネイティブ ライブラリ( .dll、 .so または .jnilib) を含むディレクトリです。[OK] をクリックします。

元の説明については、https://www.jetbrains.com/help/idea/2016.3/configuring-module-dependencies-and-libraries.html#d1860048e28を参照してください。

これは、MS SQL の統合セキュリティを使用するために JDBC ドライバーに.dll ( sql_auth.dll ) を追加する方法です。

于 2017-03-03T06:56:23.740 に答える
4

システム プロパティを設定しjava.library.pathて、ネイティブ ライブラリを探す場所を Java に示すことができます。

-Djava.library.path=path/to/dll

この回答によると、コードで変更する前にチェックされるのは読み取り専用フィールドですが、回避策が提供されていることに注意してください。一般に、起動時と比較して実行時に値を設定する必要はありません。

于 2013-01-21T16:43:38.743 に答える
2

DLL はパス変数からロードされます。アプリケーションの起動時に値を変更できます。

または、dll へのパスを作成し (環境変数 / システム変数を使用して)、System.load()経由でロードすることもできます。

于 2013-01-21T16:37:27.117 に答える