JVMクラスキャスト例外エラーメッセージの解釈 - キャストできない元のタイプは何ですか
-
23-09-2019 - |
質問
LinuxでIBM JVMが実行されているJava生産システムがあります。
顧客は、ログに印刷された次の例外を報告します。
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
しかし、ご覧のとおり、最初の印刷ではそうではありません。
私はBという名前の実際のクラスがあるかもしれないと思ったが、javax.Namingの下にあるクラスを見つけることができた...
ここで起こっている名前の難解はありますか?
私は今、文字列にキャストしようとする前に、インスタンスのクラスを印刷するバージョンを顧客に送信する予定です。
i.getClass().getCanonicalName()
しかし、これらのpingのポンは1週間かかります。もしあなたがアイデアを持っていて、その前に私を助けることができれば、それはスーパーになるでしょう!
解決
[B
の配列です byte
(すなわちa byte[]
)。に注意してください [
名前の一部です。
を参照してください APIの Class.getName()
それらの名前がどのように作成されるかに関するルールのため。