我们正在尝试调试我们的WAS(Websphere Application Server)实例的一些平均类加载器问题。
为此,我们提供了选项 -verbose:class,以查看哪个类 WAS 正在从哪里加载。
对于大多数类,我们得到的输出如下
Loading class <some class> from <some jar file>
但仅适用于某些类(包括引起问题的类)
Loading class <some class>
被打印出来。
这些从何而来?让他们直接从地狱加载,或者为什么 IBM 要保护他们的真实身份?
更新:我们正在寻找的类是javax.xml.ws.Service,它实际上应该来自rt.jar(我们正在它上面得到一个java.lang.VerifyError)
如果您对 JVM 读取哪些文件感兴趣,则可以使用 strace、dtrace 或 lsof 等操作系统工具来观察进程读取的文件。虽然这不会告诉您从该文件加载哪些类。
您是否了解 IBM JDK 诊断指南?它包含一章"类装入器诊断"。
也许您要加载的类不是来自罐子?也许它是动态生成的?类的名称可能包含提示...
如果输出看起来像
[Loaded $Proxy2 by instance of java.lang.reflect.Proxy]
。然后您的类是自动生成的