Normally whats the reason to get java.lang.ClassCastException ..? I get the following error in my application
java.lang.ClassCastException: [Lcom.rsa.authagent.authapi.realmstat.AUTHw 16 Answers
According to the documentation:
Thrown to indicate that the code has attempted to cast an Object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:
Object x = new Integer(0); System.out.println((String)x); 3A ClassCastException ocurrs when you try to cast an instance of an Object to a type that it is not. Casting only works when the casted object follows an "is a" relationship to the type you are trying to cast to. For Example
Apple myApple = new Apple(); Fruit myFruit = (Fruit)myApple; This works because an apple 'is a' fruit. However if we reverse this.
Fruit myFruit = new Fruit(); Apple myApple = (Apple)myFruit; This will throw a ClasCastException because a Fruit is not (always) an Apple.
It is good practice to guard any explicit casts with an instanceof check first:
if (myApple instanceof Fruit) { Fruit myFruit = (Fruit)myApple; } 1@Laurențiu Dascălu's answer explains how / why you get a ClassCastException.
Your exception message looks rather suspicious to me, but it might help you to know that "[Lcom.rsa.authagent.authapi.realmstat.AUTHw" means that the actual type of the object that you were trying to cast was com.rsa.authagent.authapi.realmstat.AUTHw[]; i.e. it was an array object.
Normally, the next steps to solving a problem like this are:
- examining the stacktrace to figure out which line of which class threw the exception,
- examining the corresponding source code, to see what the expected type, and
- tracing back to see where the object with the "wrong" type came from.
It's because you're casting to the wrong thing - you're trying to convert to a particular type, and the object that your express refers to is incompatible with that type. For example:
Object x = "this is a string"; InputStream y = (InputStream) x; // This will throw ClassCastException If you could provide a code sample, that would really help...
To avoid x !instance of Long prob Add
<property name="openjpa.Compatibility" value="StrictIdentityValues=false"/> in your persistence.xml
ClassA a = <something>; ClassB b = (ClassB) a; The 2nd line will fail if ClassA is not a subclass of ClassB, and will throw a ClassCastException.