48

I understand that you can set the Java library path with an option (-Djava.library.path=/path/to/libs) before executing the program, but is there a place on the system where Java looks if you don't set it manually?

0

3 Answers 3

51

Its default value depends on the operating system:

  • On Windows, it maps to PATH
  • On Linux, it maps to LD_LIBRARY_PATH
  • On OS X, it maps to DYLD_LIBRARY_PATH
Sign up to request clarification or add additional context in comments.

Where does this infomation come from?
Good question, no idea.
The default value is set by a native method in System.java and I don't have time to dig further into it atm.
13

For Java 8, this differs based on OS. This is the behavior I observed:

  • Windows 10/Oracle JDK 8: java.library.path=%PATH%;.
  • macOS El Capitan/Oracle JDK 8: java.library.path=$JAVA_LIBRARY_PATH:~/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.. DYLD_LIBRARY_PATH and LD_LIBRARY_PATH variables are ignored. Moreover, both these variables are removed from the environment of Java applications.
  • Linux CentOS 7/Open JDK 8: java.library.path=$LD_LIBRARY_PATH:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

Apparently JAVA_LIBRARY_PATH still works with El Captain and jdk 8, or at least with the recent 1.8.0_162-b12 build
12

However, Matt Ball is not totally correct.

On my Linux box, my Java library path is

/usr/lib64/icedtea6/jre/lib/amd64/server:/usr/lib64/icedtea6/jre/lib/amd6ib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

While my LD_LIBRARY_PATH is /usr/local/lib64.

Sun / Oracle changed the behavior between 1.6 and 1.7: blogs.oracle.com/darcy/entry/purging_ld_library_path

Your Answer

Draft saved
Draft discarded

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.