我有一个 Java 生产系统,其中 IBM JVM 在 Linux 上运行。
客户报告在日志中打印以下异常:
java.lang.ClassCastException:[B 与 java.lang.String 不兼容
当尝试转换从以下位置返回的各个属性时:javax.naming.directory.InitialDirContext(...)
从这个异常中我无法弄清楚无法转换为 String 的类型是什么。 “B”是什么?
通常,我知道类转换错误消息应该如下所示:
java.lang.ClassCastException:java.lang.Integer与java.lang.String不兼容
但正如您所看到的,第一个打印输出中的情况并非如此。
我认为可能有一个名为 B 的实际类,但我可以在 javax.naming 下找到一个...
这里是否存在名称混淆?
我现在计划向客户发送一个版本,该版本将在尝试转换为字符串之前打印出实例的类:
i.getClass().getCanonicalName()
但是这些乒乓球需要一周的时间,如果你有一个想法并能在此之前帮助我,那就太棒了!
最佳答案
[B
是一个 byte
数组(即 byte[]
)。请注意,[
是名称的一部分。
请参阅API for Class.getName()
了解如何生成这些名称的规则。
关于java - 解释 JVM 类转换异常错误消息 - 无法转换的原始类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154366/