ホームページ >Java >&#&チュートリアル >Java アプリケーションで使用するためにサードパーティの JAR ファイルを使用して DLL をパッケージ化するにはどうすればよいですか?

Java アプリケーションで使用するためにサードパーティの JAR ファイルを使用して DLL をパッケージ化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-25 21:51:12742ブラウズ

How Can I Package DLLs with a Third-Party JAR File for Use in a Java Application?

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 は「パス」で指定された一時ディレクトリに抽出され、ロードされます。 System.load() を使用してメモリにロードします。特定の JAR 構造と DLL の場所に基づいて、正確なファイル パスとリソース パスを調整する必要がある場合があることに注意してください。

以上がJava アプリケーションで使用するためにサードパーティの JAR ファイルを使用して DLL をパッケージ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。