Maison > Java > javaDidacticiel > Comment puis-je regrouper une application Java avec des fichiers JAR tiers et des dépendances DLL dans un seul JAR ?

Comment puis-je regrouper une application Java avec des fichiers JAR tiers et des dépendances DLL dans un seul JAR ?

Susan Sarandon
Libérer: 2024-11-24 09:20:10
original
352 Les gens l'ont consulté

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

Emballage de fichiers JAR tiers avec des dépendances DLL

Q : J'ai une bibliothèque Java qui nécessite deux fichiers DLL et mon propre programme Java qui utilise cette bibliothèque. Comment puis-je combiner tous les composants dans un seul fichier JAR qui inclut à la fois mon code, le JAR tiers et les DLL ?

R : Pour créer un fichier JAR intégrant des dépendances DLL :

  • Emballez les DLL : Incluez les fichiers DLL n'importe où dans le JAR structure.
  • Extraire les DLL : Avant d'utiliser les DLL, extrayez-les du JAR vers un emplacement spécifié sur votre disque dur. Ceci est essentiel pour le traitement ultérieur.

Dans le domaine de l'emballage, les DLL et autres fichiers sont traités de la même manière que les fichiers d'une archive ZIP. Vous pouvez utiliser le code Java suivant pour extraire des DLL d'un JAR :

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();
        }
    }
}
Copier après la connexion

N'oubliez pas que l'empaquetage de DLL ou d'autres fichiers dans un JAR est aussi simple que l'empaquetage de fichiers dans une archive ZIP. La démonstration de code fournie utilise une structure de fichier ZIP pour extraire les DLL d'un JAR.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal