如何在客户端环境下调试ClassNotFoundException错误

4
我们的一位客户遇到了问题:
有时候他运行我们的java应用程序,会出现ClassNotFoundException的异常。包含“缺失”类的jar文件已经正确地放置在类路径下,但是该问题在他的环境中不稳定(取决于我们调用应用程序的方式-命令行还是快捷方式,以及其他环境因素)。
我们想要交给他一个调试版本,该版本可以打印输出查找缺失类的路径和URL,以便我们了解为什么找不到这些缺失的类,并解决这个问题。
我们尝试使用-verbose:class,但它只打印成功加载的类及其实际路径。是否有一种方法可以打印每个(或更好的只有缺失的)类被搜索的路径?

检查系统环境变量,可能会添加相同的类两次。 - Sully
@HithamS.AlQadheeb - 你能解释一下一个类如何被加载两次吗? - Elist
它可能不会引起ClassNotFoundException异常。你能否发布有关环境变量和类路径设置的更多详细信息? - Sully
Classpath被嵌入到由install4j生成的exe中。我怀疑问题出在环境中一些错误配置的驱动器映射,这取决于应用程序如何启动而被错误地解决了。 - Elist
1个回答

1
根据异常,毫无疑问是类路径出了问题,导致JVM找不到所需的类。
既然你说缺失的类位于jar文件中,但无法找到,请尝试以下解决方案。
尝试访问其他类,这些类放置在与缺失类相同的特定包或此jar文件的任何包中。如果所有内容都成功,则可能表明源文件中对缺失类存在错误的包名称。
此外,如果您擅长使用-classpath选项,可以使用控制台中的javac命令调试此问题。

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