尝试调试基于Java的程序,该程序在使用Ubuntu 16.04的一台机器上运行,而不是在另一台机器上运行(相同的OS)。有没有办法可以找到启动这个Java程序时调用的程序/库?换句话说,我想我错过了一台机器上的文件/库,导致Java程序崩溃。这被称为回溯吗?
答案 0 :(得分:1)
您有两个版本的相同jar库或多个库。
例如,您有blast2go.old.jar
版本和blast2go.new.jar
版本。
来自B2GPluginInitializer
的{{1}}类创建了blast2go.new.jar
调用其构造函数的对象。
但是,遗憾的是,类加载器从UserInfo
加载UserInfo
,而不是从blast2go.old.jar
加载blast2go.new.jar
。
因此,要检查错误库的路径,您可以使用下面的代码。
你可以在异常之前的代码中的某处检查
URL url = Thread.currentThread().getContextClassLoader()
.getResource("com/biobam/blast2go/api/user/UserInfo.class");
System.out.println(url);
第二步是检查从中调用构造函数的类B2GPluginInitializer
。