2010-01-28 3 views
2

У меня есть система производства Java с IBM JVM, работающая в Linux.
Клиент сообщает следующее исключение напечатанный в журнале:
java.lang.ClassCastException: [B incompatible with java.lang.String
При попытке бросить отдельные атрибуты, возвращаемые: javax.naming.directory.InitialDirContext(...)
Из этого исключения я не могу понять, что это тип, который не может быть преобразован в Строка. Что такое «Б»?Интерпретация сообщения об ошибке исключения исключения JVM-класса - каков исходный тип, который нельзя отличить

Обычно, я знаю, что сообщение об ошибке класса литой должно выглядеть примерно так:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
Но как вы можете видеть, что это не так, в первой распечатке.
Я думал, что может быть настоящий класс с именем B, но я мог бы найти его под javax.naming ...
Есть ли здесь запутывание имени?
я теперь планирую отправить клиенту версию, которая будет печатать из класса экземпляра, прежде чем пытаться бросить в строку:
i.getClass().getCanonicalName()
Но этот пинг PONGS занять неделю, если у вас есть идея, и можете помочь мне до этого, это было бы супер!

+1

Это поведение не характерно для IBM JVM, кстати. –

ответ

4

[B - массив из byte (то есть a byte[]). Обратите внимание, что [ является частью имени.

См. API for Class.getName() относительно правил их создания.