Heim  >  Artikel  >  Java  >  Wie kann ich eine Java-Anwendung mit JAR-Dateien und DLL-Abhängigkeiten von Drittanbietern in ein einziges JAR packen?

Wie kann ich eine Java-Anwendung mit JAR-Dateien und DLL-Abhängigkeiten von Drittanbietern in ein einziges JAR packen?

Susan Sarandon
Susan SarandonOriginal
2024-11-24 09:20:10297Durchsuche

How Can I Package a Java Application with Third-Party JAR Files and DLL Dependencies into a Single JAR?

JAR-Dateien von Drittanbietern mit DLL-Abhängigkeiten packen

F: Ich habe eine Java-Bibliothek, die zwei DLL-Dateien und mein eigenes Java-Programm erfordert das diese Bibliothek nutzt. Wie kann ich alle Komponenten in einer einzigen JAR-Datei kombinieren, die sowohl meinen Code, das Drittanbieter-JAR als auch die DLLs enthält?

A: So erstellen Sie eine JAR-Datei, die DLL-Abhängigkeiten enthält:

  • Packen Sie die DLLs: Fügen Sie die DLL-Dateien an einer beliebigen Stelle im JAR ein Struktur.
  • Extrahieren Sie die DLLs: Bevor Sie die DLLs verwenden, extrahieren Sie sie aus dem JAR an einen angegebenen Speicherort auf Ihrer Festplatte. Dies ist für die weitere Verarbeitung unerlässlich.

Im Bereich der Verpackung werden DLLs und andere Dateien ähnlich behandelt wie Dateien in einem ZIP-Archiv. Sie können den folgenden Java-Code verwenden, um DLLs aus einem JAR zu extrahieren:

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class ExtractDLLs {

    public static void main(String[] args) {
        String jarPath = "path/to/my.jar";
        String outputDirectory = "path/to/output";

        try (ZipFile jarFile = new ZipFile(jarPath)) {
            Enumeration<? extends ZipEntry> entries = jarFile.entries();

            while (entries.hasMoreElements()) {
                ZipEntry entry = entries.nextElement();

                if (entry.isDirectory()) {
                    continue;
                }

                if (entry.getName().endsWith(".dll")) {
                    InputStream in = jarFile.getInputStream(entry);
                    OutputStream out = new FileOutputStream(new File(outputDirectory, entry.getName()));

                    byte[] buffer = new byte[1024];
                    int len;
                    while ((len = in.read(buffer)) > 0) {
                        out.write(buffer, 0, len);
                    }

                    in.close();
                    out.close();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Denken Sie daran, dass das Packen von DLLs oder anderen Dateien in ein JAR genauso einfach ist wie das Packen von Dateien in ein ZIP-Archiv. Die bereitgestellte Codedemonstration nutzt eine ZIP-Dateistruktur, um DLLs aus einem JAR zu extrahieren.

Das obige ist der detaillierte Inhalt vonWie kann ich eine Java-Anwendung mit JAR-Dateien und DLL-Abhängigkeiten von Drittanbietern in ein einziges JAR packen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn