تفسير رسالة خطأ استثناء من فئة JVM - ما هو النوع الأصلي الذي لا يمكن إلقاؤه
-
23-09-2019 - |
سؤال
لدي نظام إنتاج Java مع تشغيل IBM JVM على Linux.
يقوم العميل بالإبلاغ عن الاستثناء التالي المطبوع إلى السجل:
java.lang.ClassCastException: [B incompatible with java.lang.String
عند محاولة إلقاء السمات الفردية التي تم إرجاعها من: javax.naming.directory.InitialDirContext(...)
من هذا الاستثناء ، لا يمكنني معرفة ما هو النوع الذي لا يمكن تحويله إلى سلسلة. ما هو "ب"؟
عادة ، أعلم أن رسالة خطأ في الفصل يجب أن تبدو مثل هذا:
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.String
ولكن كما ترون ، ليس الأمر كذلك في النسخة المطبوعة الأولى.
اعتقدت أنه قد يكون هناك فئة فعلية تدعى B ، لكن يمكن أن أجد واحدة تحت Javax.naming ...
هل هناك اسم محزن يحدث هنا؟
أخطط الآن لإرسال نسخة من العميل من شأنها طباعة فئة المثيل قبل محاولة الإلقاء على السلسلة:
i.getClass().getCanonicalName()
لكن هذه Ping Pongs تستغرق أسبوعًا ، إذا كان لديك فكرة ويمكن أن تساعدني قبل ذلك ، فسيكون ذلك رائعًا!
المحلول
[B
هي مجموعة من byte
(أي أ byte[]
). نلاحظ أن [
هو جزء من الاسم.
انظر API ل Class.getName()
لقواعد كيفية إنتاج هذه الأسماء.