tctdev
asked on
java.lang.ClassCastException: com/ms/wfc/app/Timer$TimerProc from a Window.callback
Does anybody know what kind of windows callbacks throws the following exception (see the callstack below).
The callstack contains a ListView.wndProc call, so it's possible that it's a ListView specific question.
The application was built with Microsoft Visual J++ 6.0.
The callstack contains a ListView.wndProc call, so it's possible that it's a ListView specific question.
The application was built with Microsoft Visual J++ 6.0.
java.lang.ClassCastException: com/ms/wfc/app/Timer$TimerProc
at com/ms/wfc/app/Window.fromHandle
at com/ms/wfc/ui/Control.fromHandle
at com/ms/wfc/ui/Control.reflectMessage
at com/ms/wfc/ui/Control.wmNotify
at com/ms/wfc/ui/Control.wndProc
at com/ms/wfc/ui/Form.wndProc
at com/ms/wfc/app/Application$ParkingForm.wndProc
at com/ms/wfc/ui/Control$ControlWindow.wndProc
at com/ms/wfc/app/Window.callback
at com/ms/wfc/win32/Windows.CallWindowProc
at com/ms/wfc/app/Window.defWndProc
at com/ms/wfc/ui/Control$ControlWindow.defWndProc
at com/ms/wfc/ui/Control.defWndProc
at com/ms/wfc/ui/Control.wmPaint
at com/ms/wfc/ui/Control.wndProc
at com/ms/wfc/ui/ListView.wndProc
at com/ms/wfc/ui/Control$ControlWindow.wndProc
at com/ms/wfc/app/Window.callback
at com/ms/wfc/win32/Windows.DispatchMessage
at com/ms/wfc/app/Application$ThreadContext.runMessageLoop
at com/ms/wfc/app/Application.run
at Form2.main
ASKER
mwvisa1:
I can't reproduce the problem, it's very ad hoc. My source is not too little (~2 MB) and the main() method is very simple (see below)
I think the conflict must be between the followings:
- Timer (I use ~30 timer, but I use these very rarely, the most is disabled)
- com.ms.wfc.app.MethodInvok er: to make changes on the Controls requested from a thread (not from the main thread)
- ListView callback (it appears on the callstack lista)
I know the ClassCastException but it's thrown by an automatic windows callback, not by my code. I never use the
Timer.TimerProc class, and I never cast it.
jkr:
I think this problem is closer to mfc than standard java programming (because of microsoft java using and windows callbacks)
I hope, that somebody met something like similar.
Thanks!
I can't reproduce the problem, it's very ad hoc. My source is not too little (~2 MB) and the main() method is very simple (see below)
I think the conflict must be between the followings:
- Timer (I use ~30 timer, but I use these very rarely, the most is disabled)
- com.ms.wfc.app.MethodInvok
- ListView callback (it appears on the callstack lista)
I know the ClassCastException but it's thrown by an automatic windows callback, not by my code. I never use the
Timer.TimerProc class, and I never cast it.
jkr:
I think this problem is closer to mfc than standard java programming (because of microsoft java using and windows callbacks)
I hope, that somebody met something like similar.
Thanks!
public static void main(String args[])
{
Form2.params = args;
Application.OLERequired();
Application.run(new Form2());
}
This could be a threading issue which is why it happens haphazardly as it depends on occurrence of conflict.
// this statement makes me think you are setting a static variable
// what happens if another call comes in and changes this mid stream
// is params defined as String[] like args is
Form2.params = args;
Application.OLERequired();
// you then call a new form instance here
// hopefully this form uses the static params passed in above
Application.run(new Form2());
/********************/
// could this work for you
Form2 f = new Form2(); // or Form2(args);
f.params = args;
Application.OLERequired();
Application.run(f);
ASKER
The Form2 object is created only in the main(), has only one instance.
I don't know what another call could come in, but I'm going to give it a try.
I will inform you within few days.
Thanx.
I don't know what another call could come in, but I'm going to give it a try.
I will inform you within few days.
Thanx.
ASKER
Not work. The exception and the callstack are the same.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I'll remove all the timers ... Come back soon ...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
java.lang.ClassCastExcepti
Usually you will see this in code as:
Type2 t2 = (Type2) t1;
Kev