默认的Java库路径是什么?

44

我知道在运行程序之前可以使用选项(-Djava.library.path=/path/to/libs)来设置Java库路径,但如果不手动设置它,Java会在系统上查找是否有预设的地方吗?

3个回答

49

默认值取决于操作系统:

  • 在Windows上,它映射到PATH
  • 在Linux上,它映射到LD_LIBRARY_PATH
  • 在OS X上,它映射到DYLD_LIBRARY_PATH

4
这信息是从哪里得来的? - Eric
5
好问题,不知道。 - Matt Ball
3
默认值由System.java中的本地方法设置,目前我没有时间深入挖掘。 - Matt Ball

12

然而,马特·博尔并非完全正确。

在我的Linux计算机上,我的Java库路径是:

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

虽然我的LD_LIBRARY_PATH/usr/local/lib64


4
Sun/Oracle在1.6和1.7版本之间更改了行为:https://blogs.oracle.com/darcy/entry/purging_ld_library_path - gerardw

12

对于Java 8,这取决于操作系统。这是我观察到的行为:

  • 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_PATHLD_LIBRARY_PATH变量被忽略,并且这两个变量从Java应用程序的环境中删除。
  • Linux CentOS 7/Open JDK 8: java.library.path=$LD_LIBRARY_PATH:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

1
显然,JAVA_LIBRARY_PATH仍然适用于El Captain和jdk 8,或者至少适用于最近的1.8.0_162-b12版本。 - MxR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接