簡単に言うと、実行可能な jar があり、jni.dll
これは に依存していlib.dll
ます。そして、私はとても恐ろしいUnsatisfiedLinkError
.
私の経験からすると、この答えはかなり近いですが、問題を解決することはできません。でdllの存在するフォルダを指定しjava.library.path
ても動作しません。PATH
Windows環境変数も変更する必要があります。java.library.path
実際、 WindowsのデフォルトはPATH
.
これを修正する「きれいな」方法はありますか?Windows 用のインストーラーを作成したいのですが、エンド ユーザーが手動で作業する必要がないように、この問題にどのように対処すればよいか考えています。
編集:
私が実装したのは次のとおりです。アプリケーションには、サポートされているすべてのアーキテクチャの動的ライブラリを含む「native_libs」というフォルダーが付属しています。構造は次のとおりです。
/
+- native_libs/
+- windows/
| +- x86/
| | +- ...
| +- x64/
| +- ...
|
+- linux/
| +- x86/
| | +- ...
| +- x64/
| +- ...
|
+- libs/
+- ...
実行時に、アプリケーションの初期化中に、正しい JRE アーキテクチャとシステム OS が検出され、適切なライブラリ ファイルが libs/ フォルダーにコピーされます。はjava.library.path
、一般的なハックを使用して実行時にも設定されています。最後に、PATH
ネイティブ ランチャーを使用して Windows の環境変数を設定します。
改善の余地はありますか?ファイルと同じディレクトリに dll をコピーすると、変数と変数jar
を設定する必要がなくなるのではないでしょうか? dll の読み込みも調査する必要があります。これにより、ファイルをコピーする必要がなくなります。java.library.path
PATH
System.load()