I'm running into an interesting classloading problem with Felix
(2.0.0) on my mac. I have a simple test activator like the following:

public class LAFClassLoadingTest implements BundleActivator {
    public void start(BundleContext c) throws Exception {
        // loads internal apple laf class via Class.forName()
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }

    public void stop(BundleContext c) {}
}

When I install and start this bundle, I get a NoClassDefFoundError
with apple/laf/CoreUIControl:

org.osgi.framework.BundleException: Activator start error in bundle
lafclassloading_test [4].
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1750)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1621)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:890)
    at 
org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:114)
    at 
org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:281)
    at 
org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:184)
    at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.NoClassDefFoundError: apple/laf/CoreUIControl
    at com.apple.laf.AquaLookAndFeel$1.run(AquaLookAndFeel.java:123)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.apple.laf.AquaLookAndFeel.initialize(AquaLookAndFeel.java:120)
    at javax.swing.UIManager.setLookAndFeel(UIManager.java:545)
    at javax.swing.UIManager.setLookAndFeel(UIManager.java:590)
    at org.osgi.test.LAFClassLoadingTest.start(LAFClassLoadingTest.java:13)
    at 
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:667)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1699)
    ... 6 more
java.lang.NoClassDefFoundError: apple/laf/CoreUIControl

I googled for this issue, and tried a couple of suggested solutions.

First, I tried adding the apple.laf package to the
org.osgi.framework.system.packages.extra property, and also added it
to the Import-Package property of my bundle. It still failed with the
same error, although I could see that the dependency was successfully
resolved.

Second, I tried the org.osgi.framework.bootdelegation property, and
added apple packages. Still no success, and I failed with the same
NoClassDefFoundError.

Can anyone shed light on why this classloading is not working even
with these solutions, and what is the "right" way to make this work?

FYI, the bundle starts just fine with Equinox.

Thanks,
Sangjin

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to