Estrai e carica DLL da JAR

La mia applicazione Java utilizza una libreria DLL. Come posso farlo funzionare dal file JAR?

La DLL si trova nella cartella delle fonti del progetto. Devo includerlo nel mio JAR, estrarlo in runtime (nella stessa directory del jar) e caricarlo.

È necessario inserire la DLL nel percorso della libreria ( consigliato ) prima di provare a caricarlo. in modo che dovrai estrarlo dal barattolo e copiarlo nel percorso lib.

private static void loadLib(String path, String name) { name = System.mapLibraryName(name); // extends name with .dll, .so or .dylib try { InputStream in = ACWrapper.class.getResourceAsStream("/"+path + name); File fileOut = new File("your lib path"); OutputStream out = FileUtils.openOutputStream(fileOut); IOUtils.copy(in, out); in.close(); out.close(); System.load(fileOut.toString());//loading goes here } catch (Exception e) { //handle } } 

Nota: ACWrapper è la class che detiene il metodo statico

 try { InputStream in = Main.class.getResourceAsStream("/example-input.dll"); File fileOut = new File("./example-output.dll"); DataOutputStream writer = new DataOutputStream(new FileOutputStream(fileOut)); long oneChar = 0; while((oneChar = in.read()) != -1){ writer.write((int)oneChar); } in.close(); writer.close(); } catch (Exception e) { e.printStackTrace(); }