DLL を JAR ファイルにパッケージ化
2 つの対応する DLL ファイルが付属するサードパーティの JAR ライブラリを取得しました。 Java アプリケーションはこのライブラリに依存しており、すべてのコンポーネント (コード、サードパーティの JAR、および DLL) を 1 つの便利な JAR ファイルにマージしようとしています。
DLL のパッケージ化
JAR ファイルは、基本的に ZIP アーカイブと同様に機能します。 DLL を JAR に含めるには、その構造内の任意の場所に DLL を配置するだけです。ただし、DLL をパッケージ化するだけでは十分ではありません。これらを使用する前に、JAR から抽出し、ハード ドライブ上の指定された場所に保存する必要があります。
コード例
これは、Java コード ブロックの例です。このプロセスを示します:
// Package the DLLs in the JAR file // ... (your code here) // Extract and load the DLLs from the JAR private static void loadFromJar() { // Determine the temporary directory path String path = "AC_" new Date().getTime(); // Extract the DLLs and load them into memory loadLib(path, "acwrapper"); loadLib(path, "aamapi51"); loadLib(path, "libeay32"); } // Extract and load a specific DLL private static void loadLib(String path, String name) { InputStream in = Foo.class.getResourceAsStream("/lib-bin/" name ".dll"); File fileOut = new File(System.getProperty("java.io.tmpdir") "/" path "/lib-bin/" name ".dll"); OutputStream out = FileUtils.openOutputStream(fileOut); IOUtils.copy(in, out); in.close(); out.close(); System.load(fileOut.toString()); }
このコードでは、DLL は「path」で指定された一時ディレクトリに抽出され、System.load() を使用してメモリにロードされます。特定の JAR 構造と DLL の場所に基づいて、正確なファイル パスとリソース パスを調整する必要がある場合があることに注意してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3