"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso empacotar DLLs com um arquivo JAR de terceiros para uso em um aplicativo Java?

Como posso empacotar DLLs com um arquivo JAR de terceiros para uso em um aplicativo Java?

Publicado em 2025-01-22
Navegar:660

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

Empacotando DLLs em arquivos JAR

Você adquiriu uma biblioteca JAR de terceiros que vem com dois arquivos DLL correspondentes. Seu aplicativo Java depende dessa biblioteca e você busca mesclar todos os componentes (seu código, JAR de terceiros e DLLs) em um único arquivo JAR conveniente.

Empacotando as DLLs

Arquivos JAR funcionam essencialmente como arquivos ZIP. Para incluir DLLs em seu JAR, basta colocá-las em qualquer lugar de sua estrutura. No entanto, simplesmente empacotar as DLLs não é suficiente. Antes de usá-los, você deve extraí-los do JAR e salvá-los em um local designado em seu disco rígido.

Exemplos de código

Aqui está um bloco de código Java exemplar que demonstra este processo:

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

Neste código, as DLLs são extraídas para o diretório temporário especificado por "path" e então carregadas na memória usando System.load(). Lembre-se de que pode ser necessário ajustar os caminhos exatos dos arquivos e dos recursos com base em sua estrutura JAR específica e locais de DLL.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3