Interpretando uma mensagem de erro de exceção de elenco da classe JVM - qual é o tipo original que não pode ser lançado

StackOverflow https://stackoverflow.com/questions/2154366

  •  23-09-2019
  •  | 
  •  

Pergunta

Eu tenho um sistema de produção Java com a IBM JVM em execução no Linux.
Um cliente relata a seguinte exceção impressa ao log:
java.lang.ClassCastException: [B incompatible with java.lang.String
Ao tentar lançar os atributos individuais retornados de: javax.naming.directory.InitialDirContext(...)
A partir dessa exceção, não consigo descobrir qual é o tipo que não poderia ser convertido em string. O que é "B"?

Normalmente, eu sei que uma mensagem de erro de elenco de classe deve parecer algo assim:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Mas como você pode ver, não é o caso na primeira impressão.
Eu pensei que poderia haver uma classe real chamada b, mas eu poderia encontrar uma sob javax.naming ...
Existe um nome de ofuscação acontecendo aqui?
Agora pretendo enviar ao cliente uma versão que imprimirá a classe da instância antes de tentar lançar para string:
i.getClass().getCanonicalName()
Mas esses pinguezinhos levam uma semana, se você tiver uma ideia e pode me ajudar antes disso, isso seria super!

Foi útil?

Solução

[B é uma variedade de byte (ou seja, a byte[]). Observe que o [ faz parte do nome.

Veja o API para Class.getName() Para as regras sobre como esses nomes são produzidos.

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