Interpretare un messaggio di errore di eccezione fusione JVM Classe - qual è il tipo di originale che non può essere colato
-
23-09-2019 - |
Domanda
Ho un sistema di produzione Java con IBM JVM in esecuzione su Linux.
Un cliente segnala la seguente eccezione stampata nel registro:
java.lang.ClassCastException: [B incompatible with java.lang.String
Quando si cerca di lanciare i singoli attributi restituiti da: javax.naming.directory.InitialDirContext(...)
Da questa eccezione non riesco a capire qual è il tipo che non potrebbe essere convertito in stringa. Ciò che è "B"?
Normalmente, so che un messaggio di errore calco dovrebbe essere simile a questo:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Ma come si può vedere che non è il caso nella prima stampa.
Ho pensato che ci potrebbe essere una classe reale di nome B, ma sono riuscito a trovare uno sotto javax.naming ...
C'è un nome offuscamento succedendo qui?
Io ora intenzione di inviare al cliente una versione che stamperà la classe dell'istanza prima di provare a lanciare a stringa:
i.getClass().getCanonicalName()
Ma questi pongs ping prendono una settimana, se avete un'idea e mi potrebbe aiutare prima di quella, che sarebbe super!
Soluzione
[B
è un array di byte
(cioè una byte[]
). Si noti che il [
è una parte del nome.
per Class.getName()
per le regole su come si producono quei nomi.