Forums Register Login
What is java.library.path?

I wonder what is java.library.path? where should i set this and how?

please guide.

Hi, Vanchi,

Your application tries to load a native library called liblwjgl.so (Linux) or lwjgl.dll (Windows).
Check to see if this file exists and what it's file permissions are.
This problem most often shows up because the file does not exist, has incorrect file permissions, or can not be located by the JVM.

Under Linux set LD_LIBRARY_PATH.
Under Windows set PATH.
Hi Alex,

Thanks, I found the lwjgl.dll files, there are about 4 dll files. Where should i put them?

How to find out that JVM is looking for a '.dll' or '.so' module from the exception thrown?


(1 like)
The message says "java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path". The "lwjgl" is interpreted in a platform-dependent way. On Windows, it means LWJGL.DLL . On Linux and many other UNIX variants, it means "liblwjgl.so". On other platforms, it may mean something else. You're just supposed to know what it means on your platform.

Since you're on windows, just make sure the file(s) are in a directory named on your PATH environment variable; you could add an entry if need be.
From memory JNI is a bit of a pain (on Windows any way) in that it can also say it can't find things when it means it can't load things so if your DLL needs another DLL you can sometimes get this error.
java.library.path is the path that Java uses to find native libraries (such as lwjgl.dll). you should set it to the directory that contains the DLL files. You specify this with the -D switch on the command line, for example:

java -Djava.library.path=C:\Java\ljwgl\libs org.mypackage.MyProgram

*edit* Oh, this is an old topic from 2005. (Chris, the original poster is most likely not still waiting for an answer...).
java.library.path is the path that Java uses to find native libraries (such as lwjgl.dll).
Nitin Harane welcome to the Ranch
Does it override all the set path via -Djava.library.path?
java.lang.UnsatisfiedLinkError: no CommonControl in java.library.path?
Here Common control means ?Exactly what i have to include in path?
"CommonControl" is the name of the native library that Java is looking for. If this is on Windows, it's looking for a file named "CommonControl.dll".

You'll have to include the name of the directory that contains CommonControl.dll in the java.library.path.
Hi vanchin

From your question, i assumed that, you are trying load a native library

There are two ways you can load the native library

1. System.loadLibrary(String)
2. System.load(String)

System.loadLibrary(String) uses the default path.
System.load(String) uses the absolute path

Assume, you are working on the windows environment

The JVM will search for your dll file in java.library.path system property

If your dll directory is not specified in the java.library.path system property, you get this error.

I've set java.library.path like this:
JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=512m -Djava.library.path=C:/apache-tomcat-6.0.36/lib/ocijdbc11.dll"
but I' m getting attached error.
[Thumbnail for err2.jpg]
[Thumbnail for err1.jpg]
I added kernel32.dll,msvcr80 and ocijdbc11.dll in tomcat/bin folder; still I'm facing error: UnsatisfiedLinkError:
[Thumbnail for error.jpg]
Don't let java.library.path point to the DLL itself, but to the directory that contains the DLL:


NOT: -Djava.library.path=C:/apache-tomcat-6.0.36/lib/ocijdbc11.dll
Police line, do not cross. Well, this tiny ad can go through:
Rocket Oven Kickstarter - from the trailboss

This thread has been viewed 671696 times.

All times above are in ranch (not your local) time.
The current ranch time is
Jul 18, 2018 23:29:07.