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.
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