Java で「java.lang.UnsatisfiedLinkError: no *.dll in java.library.path」を解決する方法
Web アプリケーションにカスタム DLL ファイルをロードするには、さまざまな方法を選択できます。ただし、DLL を正常にロードするには、DLL が特定の要件を満たしていることを確認することが重要です。まず、DLL は、PATH に含まれるディレクトリ、または java.library.path システム プロパティで指定されたパスに存在する必要があります。さらに、System.loadLibrary(); を使用する場合は、ライブラリの基本名のみが必要です。 .dll 拡張子は省略する必要があります。たとえば、/path/to/something.dll の場合、System.loadLibrary("something").
「java.lang.UnsatisfiedLinkError: no *.dll が発生した場合」を使用します。 java.library.path」エラーが発生した場合は、特定のエラー メッセージを調べることが重要です。 foo ライブラリ (foo.dll) が PATH または java.library.path に見つからないことが示されている場合は、DLL が指定されたディレクトリに存在することを確認する必要があります。一方、「java.lang.UnsatisfiedLinkError: com.example.program.ClassName.foo()V」のようなエラー メッセージは、アプリケーションのネイティブ Java 関数と、ライブラリ内の対応するネイティブの関数との間に不一致があることを示唆しています。
この問題をデバッグするには、System.loadLibrary() 呼び出しの周囲にログを実装して実行ステータスを確認することを検討してください。例外がスローされた場合、またはコード パスが実行されなかった場合、後者のタイプの UnsatisfiedLinkError が発生する可能性があります。
プロセスを簡素化するために、ほとんどのプログラマは、loadLibrary() 呼び出しを静的イニシャライザ ブロック内に配置することを好みます。ネイティブメソッドを含むクラス。このアプローチにより、loadLibrary() メソッドの初期化と実行が 1 回だけ確実に行われます。
class Foo { static { System.loadLibrary('foo'); } public Foo() { } }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3