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)

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top