Интерпретация сообщения об ошибке исключений класса JVM - какой исходный тип, который нельзя поднять
-
23-09-2019 - |
Вопрос
У меня есть производственная система Java с IBM JVM, работающим на Linux.
Клиент сообщает о следующем исключении, напечатанном в журнале:
java.lang.ClassCastException: [B incompatible with java.lang.String
При попытке разыграть индивидуальные атрибуты, возвращенные из: javax.naming.directory.InitialDirContext(...)
Из этого исключения я не могу понять, какой тип нельзя преобразовать в строку. Что такое "B"?
Обычно я знаю, что сообщение об ошибке с актерским составом должно выглядеть примерно так:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Но, как вы можете видеть, это не так в первой распечатку.
Я думал, что может быть настоящий класс по имени Б, но я мог бы найти его под javax.naming ...
Здесь происходит запутывание имени?
Теперь я планирую отправить клиенту версию, которая распечатает класс экземпляра, прежде чем попытаться поднять на строку:
i.getClass().getCanonicalName()
Но эти пинг -понги занимают неделю, если у вас есть идея и вы можете помочь мне до этого, это было бы супер!
Решение
[B
является множеством byte
(т.е. byte[]
) Обратите внимание, что [
является частью имени.
Увидеть API для Class.getName()
Для правил того, как произведены эти имена.