【问题标题】:java -verbose does not give a file location for every classjava -verbose 不会为每个类提供文件位置
【发布时间】:2011-08-28 19:48:06
【问题描述】:

我们正在尝试调试我们的 WAS(Websphere 应用服务器)实例的一些平均类加载器问题。

为此,我们提供了选项 -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)

【问题讨论】:

    标签: java websphere verbose


    【解决方案1】:

    如果您对 JVM 读取哪些文件感兴趣,可以使用 strace、dtrace 或 lsof 等操作系统工具来观察进程读取的文件。虽然这不会告诉您从该文件中加载了哪些类。

    你知道IBM JDK Diagnostics Guide? 它包含一章“类加载器诊断”。

    【讨论】:

    【解决方案2】:

    如果输出看起来像

    [Loaded $Proxy2 by instance of java.lang.reflect.Proxy]
    

    ...然后你的类是自动生成的

    【讨论】:

    • 但是类可以按需生成,输出看起来不一样。
    • 对,但情况是一样的——类不是来自特定的 jar 文件
    • 有趣,但与我们的情况不符,我们看到简单的“已加载 ”,没有任何进一步的信息
    【解决方案3】:

    也许您要加载的类不是来自 jar?也许它是即时生成的?类名可能包含提示...

    【讨论】:

    • 查看更新后的问题。该类确实应该来自 rt.jar 但根据 www-01.ibm.com/support/… 这个事实应该真正出现在日志中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2016-10-25
    • 2015-11-04
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多