L'interprétation d'un message d'erreur d'exception fonte JVM classe - ce qui est le type original qui ne peut pas être casté

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

  •  23-09-2019
  •  | 
  •  

Question

J'ai un système de production Java avec machine virtuelle Java IBM fonctionnant sous Linux.
Un client signale l'exception suivante imprimée dans le journal:
java.lang.ClassCastException: [B incompatible with java.lang.String
Lorsque vous essayez de jeter les attributs retournés par: javax.naming.directory.InitialDirContext(...)
A cette exception près, je ne peux pas savoir quel est le type qui ne pouvait pas être converti en chaîne. Qu'est-ce que "B"?

Normalement, je sais qu'un casting de classe de message d'erreur devrait ressembler à ceci:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Mais comme vous pouvez le voir est pas le cas dans la première impression.
Je pensais qu'il pourrait y avoir une classe réelle nommée B, mais je pouvais trouver un sous javax.naming ...
Yat-il un faux-fuyants nom se passe ici?
Je prévois maintenant d'envoyer au client une version qui imprimera la classe de l'instance avant d'essayer de jeter à la chaîne:
i.getClass().getCanonicalName()
Mais ces ping pongs prendre une semaine, si vous avez une idée et pourrait me aider avant cela, ce serait super!

Était-ce utile?

La solution

[B est un tableau de byte (à savoir un byte[]). Notez que le [ est une partie du nom.

Voir les pour Class.getName() les règles sur la façon dont ces noms sont produits.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top