如何找出Java程序在启动时使用的库?

时间:2017-03-15 18:38:45

标签: java stack-trace backtrace

尝试调试基于Java的程序,该程序在使用Ubuntu 16.04的一台机器上运行,而不是在另一台机器上运行(相同的OS)。有没有办法可以找到启动这个Java程序时调用的程序/库?换句话说,我想我错过了一台机器上的文件/库,导致Java程序崩溃。这被称为回溯吗?

1 个答案:

答案 0 :(得分:1)

您有两个版本的相同jar库或多个库。

例如,您有bla‌​st2go.old.jar版本和bla‌​st2go.new.jar版本。

来自B2GPluginInitializer的{​​{1}}类创建了bla‌​st2go.new.jar调用其构造函数的对象。

但是,遗憾的是,类加载器从UserInfo加载UserInfo,而不是从bla‌​st2go.old.jar加载bla‌​st2go.new.jar。 因此,要检查错误库的路径,您可以使用下面的代码。

你可以在异常之前的代码中的某处检查

URL url = Thread.currentThread().getContextClassLoader()
    .getResource("com/biobam/blast2go/api/user/UserInfo.class");
System.out.println(url);

第二步是检查从中调用构造函数的类B2GPluginInitializer