The class loading info wasn't helpful. If I run jdb I get the log shown below. So far the debug info isn't making sense. Hopefully it will tomorrow :-) If someone can decipher this from the log that would be helpful.
Exception occurred: java.lang.NoClassDefFoundError (to be caught at: com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(), line=279 bci=119)"thread=AWT-EventQueue-0", sun.awt.windows.accessibility.AccessibleContextMirror.<init>(), line=584 bci=766 Also, do I need to change my build in order to use jdb? One source indicated I need to use a -g option at compile time. Perhaps this is why the jdb threads output doesn't show thread IDs. Thanks, Pete === log of debug session === C:\SwingSet2>c:\OpenJDK-b96m\jdk7\build\windows-i586-fastdebug\bin\jdb SwingSet2 java.util.ServiceConfigurationError: com.sun.jdi.connect.Connector: Provider sun.jvm.hotspot.jdi.SACoreAttachingConnector not found java.util.ServiceConfigurationError: com.sun.jdi.connect.Connector: Provider sun.jvm.hotspot.jdi.SADebugServerAttachingConnector not found java.util.ServiceConfigurationError: com.sun.jdi.connect.Connector: Provider sun.jvm.hotspot.jdi.SAPIDAttachingConnector not found Initializing jdb ... > stop at sun.awt.windows.accessibility.AccessibleContextMirror:584 Deferring breakpoint sun.awt.windows.accessibility.AccessibleContextMirror:584. It will be set after the class is loaded. > run run SwingSet2 Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable > VM Started: wins.length = 1 Set deferred breakpoint sun.awt.windows.accessibility.AccessibleContextMirror:584 Breakpoint hit: "thread=AWT-EventQueue-0", sun.awt.windows.accessibility.AccessibleContextMirror.<init>(), line=584 bci=765 AWT-EventQueue-0[1] catch java.lang.NoClassDefFoundError Deferring all java.lang.NoClassDefFoundError. It will be set after the class is loaded. AWT-EventQueue-0[1] step > Set deferred all java.lang.NoClassDefFoundError Exception occurred: java.lang.NoClassDefFoundError (to be caught at: com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(), line=279 bci=119)"thread=AWT-EventQueue-0", sun.awt.windows.accessibility.AccessibleContextMirror.<init>(), line=584 bci=766 AWT-EventQueue-0[1] threads Group system: (java.lang.ref.Reference$ReferenceHandler)0x122 Reference Handler cond. waiting (java.lang.ref.Finalizer$FinalizerThread)0x121 Finalizer cond. waiting (java.lang.Thread)0x120 Signal Dispatcher running (java.lang.Thread)0x11f Attach Listener running (java.lang.Thread)0x252 Java2D Disposer cond. waiting (java.lang.Thread)0x59e TimerQueue cond. waiting Group main: (java.lang.Thread)0x255 AWT-Shutdown cond. waiting (java.lang.Thread)0x256 AWT-Windows running (com.sun.java.accessibility.util.ComponentEvtDispatchThread)0x26a EventQueueMonitor-ComponentEvtDispatch cond. waiting (java.awt.EventDispatchThread)0x3bc AWT-EventQueue-0 running (SwingSet2$DemoLoadThread)0x691 Thread-1 running (java.lang.Thread)0x692 DestroyJavaVM running === end log of debug session === === code for addTopLevelWindow === static boolean addTopLevelWindow(Component c) { Container parent; if (c == null) { return false; } if (!(c instanceof Window)) { return addTopLevelWindow(c.getParent()); } if ((c instanceof Dialog) || (c instanceof Window)) { parent = (Container) c; } else { parent = c.getParent(); if (parent != null) { return addTopLevelWindow(parent); } } if (parent == null) { parent = (Container) c; } // Because this method is static, do not make it synchronized because // it can lock the whole class. Instead, just lock what needs to be // locked. // synchronized (topLevelWindows) { if ((parent != null) && !topLevelWindows.contains(parent)) { topLevelWindows.addElement(parent); if (topLevelWindowListener != null) { topLevelWindowListener.topLevelWindowCreated((Window) parent); } return true; } else { return false; } } <----- this is line 279 (if I have the correct source file) } === end of code for addTopLevelWindow === David Holmes wrote: > You add it in conjunction with the -XX:+TraceClassLoading. > > David > > Pete Brunet said the following on 08/03/10 10:15: >> Hi David, I didn't get any output at all from that one - though it >> appears to be a valid parameter as it didn't result in an error >> message. -Pete >> >> David Holmes wrote: >>> Peter, >>> >>> Try adding -XX:+Verbose to get extra info >>> >>> David >>> >>> Pete Brunet said the following on 08/03/10 02:57: >>>> Thanks David, Those options tell me which classes were succesfully >>>> loaded but not what classes the class loader was trying to load >>>> when the >>>> class loader was attempting to load SwingEventMonitor. Is there a way >>>> to get a deeper dump while a particular class is being loaded? -Pete >>>> >>>> David Holmes wrote: >>>>> Try -verbose:class or -XX:+TraceClassLoading >>>>> >>>>> HTH >>>>> >>>>> David Holmes >>>>> >>>>> Pete Brunet said the following on 07/31/10 07:53: >>>>>> This blog post has been helpful to at least start the investigation: >>>>>> http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> However, I haven't found anything yet similar to the cases >>>>>> discussed in >>>>>> the blog entry. Since SwingEventMonitor was last updated for 1.4 >>>>>> I do >>>>>> see the use of Class and ListModel instead of Class<T> and >>>>>> ListModel<T> >>>>>> but it seems like this would not cause a NoClassDefFoundError. >>>>>> >>>>>> Other than visual inspection (which I've done) is there a technique >>>>>> for >>>>>> determining what classes the class loader is attempting to load as >>>>>> SwingEventMonitor is being loaded? >>>>>> >>>>>> Thanks, Pete >>>>>> >>>>>> Pete Brunet wrote: >>>>>>> What is the correct way to fix this? >>>>>>> >>>>>>> Exception in thread "AWT-EventQueue-0" >>>>>>> java.lang.NoClassDefFoundError: >>>>>>> com/sun/java/accessibility/util/SwingEventMonitor >>>>>>> at >>>>>>> sun.awt.windows.accessibility.AccessibleContextMirror.<init>(AccessibleContextMirror.java:583) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> This class lives in jaccess-1_4.jar which I copy to lib\ext and is >>>>>>> documented here: >>>>>>> http://download.oracle.com/docs/cd/E17802_01/j2se/javase/technologies/accessibility/docs/jaccess-1.3/doc/api/com/sun/java/accessibility/util/package-summary.html >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Since (as far as I know) this class isn't part of the OpenJDK I >>>>>>> expected >>>>>>> javac to fail but it didn't (at least as far as the log shows): >>>>>>> >>>>>>> ... >>>>>>> # Java sources to be compiled: (listed in file >>>>>>> c:/OPF6CE~1/jdk7/build/WINDOW~2/tmp/sun/sun.awt/awt/.classes.list) >>>>>>> ../../../src/windows/classes/sun/awt/windows/Accessibility/AccessibleContextMirror.java >>>>>>> >>>>>>> >>>>>>> >>>>>>> # Running javac: >>>>>>> c:/OPF6CE~1/jdk7/build/WINDOW~2/J2SDK-~1/bin/javac >>>>>>> -J-XX:ThreadStackSize=768 -J-XX:-PrintVMOptions >>>>>>> -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-client >>>>>>> -J-Xmx395m >>>>>>> -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -source 7 >>>>>>> -target 7 >>>>>>> -encoding ascii >>>>>>> -Xbootclasspath:c:/OPF6CE~1/jdk7/build/WINDOW~2/classes >>>>>>> -sourcepath >>>>>>> c:/OPF6CE~1/jdk7/build/WINDOW~2/gensrc;../../../src/windows/classes;../../../src/share/classes >>>>>>> >>>>>>> >>>>>>> >>>>>>> -d c:/OPF6CE~1/jdk7/build/WINDOW~2/classes >>>>>>> @c:/OPF6CE~1/jdk7/build/WINDOW~2/tmp/sun/sun.awt/awt/.classes.list.filtered >>>>>>> >>>>>>> >>>>>>> >>>>>>> /usr/bin/mkdir -p >>>>>>> c:/OPF6CE~1/jdk7/build/WINDOW~2/tmp/sun/sun.awt/awt/obj >>>>>>> ... >>>>>>> >>>>>>> The source for SwingEventMonitor isn't in any of the three >>>>>>> directories >>>>>>> in the -sourcepath. >>>>>>> >>>>>>> What files should I provide and where should I put them, both for >>>>>>> compile time and run time? >>>>>>> >>>>>>> Thanks, Pete >>>>>>>