解读一个JVM类转换异常错误信息 - 什么是不能被铸造的原始类型
-
23-09-2019 - |
题
我有一个Java生产系统上运行Linux的IBM JVM。结果
客户报告打印到日志中出现以下异常:点击
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()
结果
但这些平pongs需要一个星期,如果你有一个想法,可以帮助我在这之前,这将是超级!
解决方案
[B
是byte
的阵列(即byte[]
)。注意,[
是名称的一部分。
请参阅 API用于Class.getName()
以这些名称是如何产生的规则。
不隶属于 StackOverflow