4.2.5. Depuração e Resolução de ClassCastExceptions


ClassCastExceptions acontece com frequência quando uma classe é carregada por um carregador de classe diferente da classe que estende. Também pode ser o resultado da mesma classe existindo em múltiplos JARs.
  1. Procure pelo aplicativo para encontrar todo(s) JAR(s) que contém a classe nomeada pela ClassCastException. Caso exista um módulo definido para a classe, encontre e remova os JAR(s) duplicados do WAR ou EAR do aplicativo.
  2. Localize o módulo do JBoss contendo a classe e defina explicitamente a dependência no arquivo MANIFEST.MF ou no arquivo jboss-deployment-structure.xml. Para mais informações, consulte Class Loading and Subdeployments no capítulo entitulado Class Loading and Modules no Development Guide para o JBoss EAP 6 em https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
  3. Caso não consiga resolver isto seguindo as etapas acima, geralmente é possível determinar a causa do problema imprimindo a informação do carregador de classe no log. Por exemplo, você encontrará o seguinte ClassCastException no log:
    java.lang.ClassCastException: com.example1.CustomClass1 não foi possível converter ao com.example2.CustomClass2
    1. No seu código, imprima a informação do carregador de classe para as classes nomeadas pela ClassCastException no log, por exemplo:
      logger.info("Class loader for CustomClass1: " + 
            com.example1.CustomClass1.getClass().getClassLoader().toString());
      logger.info("Class loader for CustomClass2: " + 
            com.example2.CustomClass2.getClass().getClassLoader().toString());
      
    2. A informação no log mostra quais módulos estão carregando as classes e, baseado no seu aplicativo, será necessário remover ou mover o(s) JAR(s) em conflito.
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.