java : 如何知道库在运行时从哪里加载

java : how to know from where the libraries are loaded at runtime

我遇到一个问题,jar 文件在一台机器上运行,但不能在另一台机器上运行 - asked on Whosebug.

似乎在第二台计算机上找不到某些依赖项。

我的问题是,有没有办法知道从哪里加载库(如 - 简单地 System.out.println("from which directory the dependent jar is linked"))?

这将输出很多信息,但它包括所有 jar 文件的位置:

您可以使用 -verbose:class 选项启动 Java 来调试类加载器问题。

您也许可以使用 jcmd(JDK 的一部分)并查询 JVM 在启动时使用的 class 路径。

jcmd ${pid_of_the_JVM} VM.system_properties | grep path

在输出中查看属性

java.class.path
sun.boot.class.path