Interpretación de un mensaje de error de excepción de la clase JVM: ¿Cuál es el tipo original que no se puede lanzar?

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

  •  23-09-2019
  •  | 
  •  

Pregunta

Tengo un sistema de producción Java con IBM JVM ejecutándose en Linux.
Un cliente informa la siguiente excepción impresa al registro:
java.lang.ClassCastException: [B incompatible with java.lang.String
Al intentar lanzar los atributos individuales devueltos de: javax.naming.directory.InitialDirContext(...)
A partir de esta excepción, no puedo entender cuál es el tipo que no se puede convertir en cadena. ¿Qué es "B"?

Normalmente, sé que un mensaje de error de reparto de clase debería verse algo así:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Pero como puede ver, no es el caso en la primera impresión.
Pensé que podría haber una clase real llamada B, pero podría encontrar una bajo Javax.naming ...
¿Hay una ofuscación de nombre aquí?
Ahora planeo enviar al cliente una versión que imprima la clase de la instancia antes de intentar emitir a String:
i.getClass().getCanonicalName()
Pero estos Ping Pongs toman una semana, si tienes una idea y podría ayudarme antes de eso, ¡eso sería súper!

¿Fue útil?

Solución

[B es una variedad de byte (es decir, un byte[]). Tenga en cuenta que el [ es parte del nombre.

Ver el API para Class.getName() para las reglas sobre cómo se producen esos nombres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top