java -verbose não fornece um local de arquivo para cada classe
Pergunta
Estamos tentando depurar alguns problemas médios do carregador de classe com nossa instância WAS (Websphere Application Server).
Para isso disponibilizamos a opção -verbose:class para ver qual classe WAS está carregando de onde.
Para a maioria das classes, obtemos resultados como
Loading class <some class> from <some jar file>
Mas para algumas classes (incluindo aquela que causa problemas) apenas
Loading class <some class>
é impresso.
De onde vêm isso?Deixe-os carregados direto do inferno ou por que a IBM está protegendo sua identidade real?
Atualizar:A classe que procuramos é javax.xml.ws.Service, que realmente deveria vir de um rt.jar (estamos obtendo um java.lang.VerifyError nele)
Solução
Se estiver interessado em quais arquivos são lidos pela JVM, você pode usar ferramentas do sistema operacional como strace, dtrace ou lsof para observar os arquivos lidos por um processo.Embora isso não diga quais classes foram carregadas desse arquivo.
Você está ciente do Guia de diagnóstico do IBM JDK? Ele contém um capítulo "Diagnóstico do carregador de classes".
Outras dicas
Talvez a classe que você deseja carregar não venha de um jarro?Talvez seja gerado instantaneamente?O nome da classe pode conter uma dica ...
Se a saída parecer
[Loaded $Proxy2 by instance of java.lang.reflect.Proxy]
...então suas aulas são geradas automaticamente