Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 500
  • Last Modified:

how to fix "The exception was: java.lang.ClassCastException" error?

Hi experts,

I have some codes work on one latest verions of jdk and broken on older version.

The error is "The exception was: java.lang.ClassCastException", which I just can't see why it won't work. Is there a way to find out exactly what class the object is? So, I can compare with what it is cast to? thanks.
0
panpioneer
Asked:
panpioneer
  • 6
  • 4
  • 3
  • +1
1 Solution
 
TimYatesCommented:
> Is there a way to find out exactly what class the object is?

if( o instanceof String )
{
    String s = (String)o ;
}

0
 
TimYatesCommented:
you can also do:

System.out.println( o.getClass.getName() ) ;

to see what it is...
0
 
TimYatesCommented:
Sorry...

System.out.println( o.getClass().getName() ) ;
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
panpioneerAuthor Commented:

THanks. It is very strange that both object are of the same type after the testing, however, when I assign one object to another, like the following, then I got the "java.lang.ClassCastException" error. why?

*****************************************
Research ac = new Research();
ac = (Research)request.getAttribute("ab");      

System.out.println((request.getAttribute("ab")).getClass().getName() ) ;
System.out.println(ac.getClass().getName() ) ;       
0
 
CEHJCommented:
I'm not sure why if this:

>>System.out.println((request.getAttribute("ab")).getClass().getName() ) ;

is printing Research (in whatever package)

But there is a redundancy in your code:

>>Research ac = new Research();

creates a new instance. You should be doing:

Research ac = null;
try {
      Object o = request.getAttribute("ab");
      ac = (Research)o;
}
catch(ClassCastException e) {
      System.err.println("Object was of type " + o.getClass().getName());
}

0
 
panpioneerAuthor Commented:
thanks. But, if I copy your code, I will get another error message: o is not defined....
0
 
CEHJCommented:
Sorry!

Research ac = null;
Object o = null;
try {
     o = request.getAttribute("ab");
     ac = (Research)o;
}
catch(ClassCastException e) {
     System.err.println("Object was of type " + o.getClass().getName());
}
0
 
panpioneerAuthor Commented:
CHEJ,

one more thing, if i move

Object o = request.getAttribute("ab"); to out side of try block, I am getting java.lang.null.exception.
0
 
panpioneerAuthor Commented:

Oop! it is java.lang.NullPointerException
0
 
CEHJCommented:
Always test for null:

if (ac != null) {
   // you got it
}
0
 
panpioneerAuthor Commented:
after the test, I still get the same object type of "Research", but, it still gives me the same ClassCastException...
0
 
panpioneerAuthor Commented:

I know this sound unbelievable. But, I re-start the Tomcat server and clean up some of the files on our C drive to give C more space and it works fine now.
0
 
CEHJCommented:
Well Tom does cache files and classes...
0
 
objectsCommented:
> ac = (Research)request.getAttribute("ab");    

Probably better to test that the stored attribute is actually a Research instance (as mentioned by tim earlier), rather than handle the exception when it occurs.

Object o = request.getAttribute("ab")
if (o instanceof Research)
{
   Research ac = (Research) o;
   // do what you need with Research instance
}
else
{
    // Not a Research instance
}
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 6
  • 4
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now