Maison >Java >javaDidacticiel >Comment regrouper des DLL avec du code Java dans un seul fichier JAR ?

Comment regrouper des DLL avec du code Java dans un seul fichier JAR ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 14:01:10931parcourir

How to Package DLLs with Java Code into a Single JAR File?

Emballage de fichiers JAR avec des inclusions de DLL

Question : Comment pouvez-vous créer un seul fichier JAR qui intègre votre code, un JAR tiers , et les fichiers DLL qui l'accompagnent ?

Réponse :Pour emballer le Fichiers DLL avec votre JAR, suivez ces étapes :

  1. Incluez les fichiers DLL : Placez les fichiers DLL n'importe où dans le JAR.
  2. Extraire avant utiliser : Avant d'accéder aux DLL, extrayez-les du JAR et stockez-les sur le disque disque.

Exemple de code :

Le code Java fourni illustre une méthode pour charger des DLL à partir d'un JAR en mémoire :

public class Foo {

    static {
        System.loadLibrary(ACWRAPPER);
    }

    private static void loadFromJar() {
        // Extract DLLs to a temporary location
        String path = "AC_" + new Date().getTime();
        loadLib(path, ACWRAPPER);
        loadLib(path, AAMAPI);
        loadLib(path, LIBEAU);
    }

    private static void loadLib(String path, String name) {
        name = name + ".dll";
        try {
            InputStream in = ACWrapper.class.getResourceAsStream(LIB_BIN + name);
            File fileOut = new File(System.getProperty("java.io.tmpdir") + "/" + path + LIB_BIN + name);
            OutputStream out = FileUtils.openOutputStream(fileOut);
            IOUtils.copy(in, out);
            System.load(fileOut.toString());
        } catch (Exception e) {
            throw new ACCoreException("Failed to load required DLL", e);
        }
    }
}

Remarques :

  • Il est crucial d'extraire les DLL avant utilisation, car vous ne pouvez pas les charger directement à partir du JAR.
  • Le conditionnement des DLL dans un JAR est similaire au conditionnement de tout autre type de fichier.

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!

Déclaration:
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