Take the 2-minute tour ×

Using JNA, the documentation says:

Make your target library available to your Java program. There are two ways to do this: The preferred method is to set the jna.library.path system property to the path to your target library. This property is similar to java.library.path but only applies to libraries loaded by JNA.

What does this actually mean? How do I set the jna.library.path system property? My app needs to reference Kernel32.dll


share|improve this question
You say JNI, but the fragment you provided mentions JNA. These are two different options to use native libraries in Java. –  pajton Mar 3 '10 at 11:00
add comment

1 Answer

up vote 5 down vote accepted

You can set system properties by using the parameter "-D" when you invoke the Java Virtual Machine on the command line:

java -Djna.library.path=<path to your library> MainClass

You can also set this programmatically in your code at your applications's startup when it has been read from e.g. a config file:

System.setProperty("jna.library.path", <path to your library>);

I haven't used JNA myself, so I don't know if it is actually too late for the JVM when you set the value in code. In that case, go with the first option.

share|improve this answer
Thanks, can you just explain what does the 'MainClass' clause mean? Does that need to reference my application's entry point? –  MalcomTucker Mar 3 '10 at 11:14
all working thanks –  MalcomTucker Mar 3 '10 at 11:24
Yes, MainClass is the entry point, i.e. the class with the main() method. –  Robert Petermeier Mar 3 '10 at 13:49
add comment

Your Answer


