"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo empaquetar archivos DLL con un archivo JAR de terceros para usarlos en una aplicación Java?

¿Cómo puedo empaquetar archivos DLL con un archivo JAR de terceros para usarlos en una aplicación Java?

Publicado el 2025-01-22
Navegar:233

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

Empaquetar archivos DLL en archivos JAR

Ha adquirido una biblioteca JAR de terceros que viene con dos archivos DLL correspondientes. Su aplicación Java se basa en esta biblioteca y usted busca fusionar todos los componentes (su código, el JAR de terceros y las DLL) en un único y conveniente archivo JAR.

Empaquetar las DLL

Los archivos JAR funcionan esencialmente como archivos ZIP. Para incluir archivos DLL en su JAR, simplemente colóquelos en cualquier lugar dentro de su estructura. Sin embargo, simplemente empaquetar las DLL no es suficiente. Antes de usarlos, debe extraerlos del JAR y guardarlos en una ubicación designada en su disco duro.

Ejemplos de código

Aquí hay un bloque de código Java de ejemplo que demuestra este proceso:

// 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());
}

En este código, las DLL se extraen al directorio temporal especificado por "ruta" y luego se cargan en la memoria usando System.load(). Tenga en cuenta que es posible que deba ajustar las rutas exactas de los archivos y de los recursos según su estructura JAR específica y las ubicaciones de las DLL.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3