A simple library class which helps with loading dynamic JNI libraries stored in the JAR archive
Switch branches/tags
Clone or download
adamheinrich Fix testLoadLibraryNullPath() test case (#12)
The tested method throws IllegalArgumentException instead of
NullPointerException when called with a null argument.
Latest commit e6a3948 Jul 20, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Fix testLoadLibraryNullPath() test case (#12) Jul 19, 2018
.gitignore Moved to maven project structure Apr 18, 2016
LICENSE Initial commit Jun 14, 2015
README.md Update README.md Apr 20, 2016
pom.xml Add basic unit tests Oct 24, 2017


Native Utils

A simple library class which helps with loading dynamic libraries stored in the JAR archive. These libraries usualy contain implementation of some methods in native code (using JNI - Java Native Interface).


  • The temporary file is stored into temp directory specified by java.io.tmpdir (by default it’s the operating system’s temporary directory). It should be automatically deleted when the application exits.
  • Although the code has some try-finally section (to be sure that streams are closed properly in case an exception is thrown), it does not catch exceptions. The exception has to be handled by the application. I belive this approach is cleaner and has some benefits.


To load the dynamic library, just make sure it is packed inside the JAR archive and call method loadLibraryFromJar:

import cz.adamh.NativeUtils;
public class HelloJNI {  
    static {   
        try {    
        } catch (IOException e) {
            // This is probably not the best way to handle exception :-)    
    public native void hello();    

More information

More information can be found in accompanying blog post.