java.lang.ClassCastException

java.lang.ClassCastException,java,Java,通常,获取java.lang.ClassCastException..的原因是什么。。?我的应用程序中出现以下错误 java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw <property name="openjpa.Compatibility" value="StrictIdentityValues=false"/> 这是因为您正在向错误的对象强制转换—您正在尝试转换为特定类型,而您的

通常,获取java.lang.ClassCastException..的原因是什么。。?我的应用程序中出现以下错误

java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>

这是因为您正在向错误的对象强制转换—您正在尝试转换为特定类型,而您的express引用的对象与该类型不兼容。例如:

Object x = "this is a string";
InputStream y = (InputStream) x; // This will throw ClassCastException
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
如果您能提供一个代码示例,这将非常有帮助…

根据:

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
抛出以指示代码试图将
对象
强制转换为子类 这不是一个例子。例如,以下代码生成一个
ClassCastException

Object x = new Integer(0);
System.out.println((String)x); 
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
ClassA=;
b类=(b类)a;

如果ClassA不是ClassB的子类,第二行将失败,并将抛出ClassCastException。

@Laurențiu Dascălu的回答解释了如何/为什么得到ClassCastException

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
我觉得您的异常消息相当可疑,但它可能会帮助您知道“[Lcom.rsa.authagent.authapi.realmstat.AUTHw”表示您尝试强制转换的对象的实际类型是
com.rsa.authagent.authapi.realmstat.AUTHw[]
;即,它是一个数组对象

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
通常,解决此类问题的下一步是:

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
  • 检查stacktrace以确定哪个类的哪一行引发了异常
  • 检查相应的源代码,查看预期的类型,以及
  • 回溯以查看“错误”类型的对象来自何处

A
ClassCastException
ocurr,当您尝试将对象的实例强制转换为它不是的类型时。强制转换仅在强制转换的对象与您尝试强制转换到的类型具有“是”关系时起作用。例如

Apple myApple = new Apple();
Fruit myFruit = (Fruit)myApple;
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
这是因为苹果是一种水果,但如果我们逆转这一点

Fruit myFruit = new Fruit();
Apple myApple = (Apple)myFruit;
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
这将抛出一个ClasCastException,因为水果并不总是苹果

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>
最好先使用
instanceof
检查来保护任何显式强制转换:

if (myApple instanceof Fruit) {
  Fruit myFruit = (Fruit)myApple;
}
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>

要避免长的
x!实例
prob 加

<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>


在您的persistence.xml中,似乎没有完整的异常消息。假设您使用的是Java 5或更高版本,异常应该包括不能转换为什么的详细信息,例如`Java.lang.ClassCastException:Java.lang.String不能转换为Java.lang.Integer`+1作为Documentton。异常文档通常是giv这是一个很好的错误提示。+1用于文档!如果您不想一直使用google,您可以下载java库的源代码(如果您的java sdk文件夹中已经有src.zip,则可以进行搜索)如果你把它链接到你的项目上,你就可以打开相关的文件并阅读那里的javadocs…bine Laur,ce mic e internetul:)如果最后一个例子改为
if(myFruit instanceof Apple){Apple myApple=(Apple)myFruit;}
,它会更具说明性
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/>