تفسير رسالة خطأ استثناء من فئة JVM - ما هو النوع الأصلي الذي لا يمكن إلقاؤه

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

  •  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() لقواعد كيفية إنتاج هذه الأسماء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top