Solved

java.lang.ClassCastException: com/ms/wfc/app/Timer$TimerProc from a Window.callback

Posted on 2008-10-29
9
586 Views
Last Modified: 2013-12-16
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.

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

Open in new window

0
Comment
Question by:tctdev
  • 5
  • 3
9 Comments
 
LVL 59

Expert Comment

by:Kevin Cross
Comment Utility
Please show snippet of code associated to this error message if it told you or if your main() method is fairly small just paste in the whole thing.

java.lang.ClassCastException ==> Usually occurs when you are setting one object equal to another object and the explicit or implicit casting cannot be done.  Examples would be you can cast a sub class to a parent class, but not the other way around.   Things of that nature.

Usually you will see this in code as:
Type2 t2 = (Type2) t1;

Kev
0
 

Author Comment

by:tctdev
Comment Utility
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.MethodInvoker: 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!

	public static void main(String args[])

	{

		Form2.params = args;

		Application.OLERequired();

		Application.run(new Form2());

	}

Open in new window

0
 
LVL 59

Expert Comment

by:Kevin Cross
Comment Utility
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);

Open in new window

0
 

Author Comment

by:tctdev
Comment Utility
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.
0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 

Author Comment

by:tctdev
Comment Utility
Not work. The exception and the callstack are the same.
0
 
LVL 59

Assisted Solution

by:Kevin Cross
Kevin Cross earned 100 total points
Comment Utility
tcdev,

I am not sure what is causing this right now.  Maybe you are right that you need a MFC officianado. :)

Will keep monitoring question and thinking of possible causes/solutions, though.

Kev
0
 

Author Comment

by:tctdev
Comment Utility
I'll remove all the timers ...  Come back soon ...
0
 

Accepted Solution

by:
tctdev earned 0 total points
Comment Utility
Replacing all the timers with my own timer class instances gives me the solution. My timer class is consist of a simple thread and MethodInvoker calls at all ticks.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now