「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java アプリケーションで使用するために、サードパーティの JAR ファイルを使用して DLL をパッケージ化するにはどうすればよいですか?

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

2025 年 1 月 22 日に公開
ブラウズ:906

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3