16

My Java application uses a DLL library. How can I get it work from the JAR file?

The DLL is in the project's sources folder. I have to include it in my JAR, extract it at runtime (in the same directory of the jar) and load it.

1 Answer 1

26

You need to put dll in your library path (recommended ) before you try to load it. so that you will have to extract it from jar and copy it into lib path .

private void loadLib(String path, String name) { name = System.mapLibraryName(name); // extends name with .dll, .so or .dylib InputStream inputStream = null; OutputStream outputStream = null; try { inputStream = getClass().getResourceAsStream("/" + path + name); File fileOut = new File("your lib path"); outputStream = new FileOutputStream(fileOut); IOUtils.copy(inputStream, outputStream); System.load(fileOut.toString());//loading goes here } catch (Exception e) { //handle } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { //log } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { //log } } } 

}

Note: ACWrapper is the class holding the static method

Sign up to request clarification or add additional context in comments.

12 Comments

Compiler can't find FileUtils and IOUtiles
you need to add commons-io jar in your classpath
System.getProperty("java.library.path"); //for win machine I remember its C:\\windows\\system32
I get Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path :(
it simply means that the dll hasn't been extracted to lib path.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.