Home » Eclipse Projects » Virgo » No frame contents in Swing app on Virgo
No frame contents in Swing app on Virgo [message #664513] |
Sun, 10 April 2011 12:26  |
Eclipse User |
|
|
|
Hello everyone.
I am deploying a very simple Swing application to Virgo which instantiates a JFrame containing a JToolBar and a JLabel.
The JFrame appears without problems, but it has no contents. The same code works works fine if run standalone via the main() method.
I am attaching the source code for the bundle. Any idea as to what is wrong?
TIA,
Barbara
[Updated on: Sun, 10 April 2011 12:26] by Moderator
|
|
| | | | | | | | | | | | | | |
Re: No frame contents in Swing app on Virgo [message #664819 is a reply to message #664809] |
Tue, 12 April 2011 04:00   |
Eclipse User |
|
|
|
Problem solved! Read on...
Next thing I noticed was some error handling in java.awt.EventDispatchThread:
/* Load the class, instantiate it, and find its handle method */
Method m;
Object h;
try {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
Class c = Class.forName(handlerClassName, true, cl);
m = c.getMethod("handle", new Class[] { Throwable.class });
h = c.newInstance();
} catch (Throwable x) {
handlerClassName = NO_HANDLER; /* Do not try this again */
return false;
}
Stepping in to the forName call, the class name was "apple.awt.CToolkit$EventQueueExceptionHandler" and the class loader was the application's bundle class loader. So the JDK is making a hierarchical class loader assumption that the bundle class loader will be able to load this class. This is the kind of thing I was talking about when I mentioned a bug in Swing, except this time it's a bug in AWT. However, there is a workaround as this situation is not entirely uncommon.
I added apple.* and, on a hunch, com.apple.* to the org.osgi.framework.bootdelegation property in lib/java6-server.profile and then the application behaved like it did under Equinox. ("Look mum!" was visible, for example.)
I presume Equinox's default boot delegation settings differ from those configured in Virgo.
|
|
| | |
Re: No frame contents in Swing app on Virgo [message #664823 is a reply to message #664821] |
Tue, 12 April 2011 04:22   |
Eclipse User |
|
|
|
Ok, the first exception I am getting is a ClassNotDefFoundException from the ClasspathManager (line 495), when it is trying to look for class with classname "javax.swing.plaf.basic.BasicPanelUI" (stacktrace below)
What does that tell you?
[org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:495),
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469),
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449),
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216),
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393),
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469),
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422),
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410),
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107),
org.eclipse.virgo.kernel.userregion.internal.equinox.KernelBundleClassLoader.loadClass(KernelBundleClassLoader.java:135),
java.lang.ClassLoader.loadClass(ClassLoader.java:248),
java.lang.Class.forName0(Native Method), java.lang.Class.forName(Class.java:247),
javax.swing.SwingUtilities.loadSystemClass(SwingUtilities.java:1850),
javax.swing.UIDefaults.getUIClass(UIDefaults.java:666),
javax.swing.UIDefaults.getUI(UIDefaults.java:738),
javax.swing.UIManager.getUI(UIManager.java:989),
javax.swing.JPanel.updateUI(JPanel.java:109),
javax.swing.JPanel.<init>(JPanel.java:69),
javax.swing.JPanel.<init>(JPanel.java:92),
javax.swing.JPanel.<init>(JPanel.java:100),
javax.swing.JRootPane.createGlassPane(JRootPane.java:528),
javax.swing.JRootPane.<init>(JRootPane.java:348),
javax.swing.JFrame.createRootPane(JFrame.java:255),
javax.swing.JFrame.frameInit(JFrame.java:236),
javax.swing.JFrame.<init>(JFrame.java:203),
org.foo.prova.Activator.init(Activator.java:42),
org.foo.prova.Activator.access$0(Activator.java:41),
org.foo.prova.Activator$1.run(Activator.java:36),
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209),
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642),
java.awt.EventQueue.access$000(EventQueue.java:85),
java.awt.EventQueue$1.run(EventQueue.java:603),
java.awt.EventQueue$1.run(EventQueue.java:601),
java.security.AccessController.doPrivileged(Native Method),
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87),
java.awt.EventQueue.dispatchEvent(EventQueue.java:612),
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269),
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184),
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174),
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169),
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161),
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)]
[Updated on: Tue, 12 April 2011 04:29] by Moderator
|
|
| | | | | | |
Goto Forum:
Current Time: Tue Jul 22 12:44:47 EDT 2025
Powered by FUDForum. Page generated in 0.05779 seconds
|