Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipse-dev] org.osgi.framework.bootdelegation not working?

I am trying to get eclipse-osgi running in a standalone java program and am having problems with getting bootclass delegation to work.


I have a simple example, with a bootclasses.jar with one class in it ("com.rsc.nonBundle.Bob").

The tinkertoy class is

package com.rsc.nonBundle;

/**
 * class example to be put on the classpath, not in a bundle
 */
public class Bob
{
   public Bob()
   {
   }
}

I  have s simple OSGI plugin which runs fine.  When I add this to my derived BundleActivator's start() method

        // look for a class on the system class path

        try
        {
           Bob bob = new Bob();
           System.out.println("Activator.
start() found non-bundle class");
        }
        catch(Throwable e)
        {
           System.out.println("Activator.start() didn't find non-bundle class");
           e.printStackTrace();
        }

then it starts throwing a ClassNotFound exception.

I've tried to run it with org.osgi.framework.bootdelegation defined to true

java -cp org.eclipse.osgi_3.6.2.R36x_v20110210.jar:bootclasses.jar \
        -Dorg.osgi.framework.bootdelegation=true
        -Dosgi.configuration.area=some/Path
        org.eclipse.core.runtime.adaptor.EclipseStarter

Here is the stack trace:

runE:
     [java] Activator Start
     [java] In Factory Accessor
     [java] In Factory Accessor returning: com.rsc.vtk.impl.fragment2.Fragment2Factory@28bb0d0d
     [java] In getMessage
     [java] com.vividsolutions.jts.JTSVersion
     [java] Activator.start() didn't find non-bundle class
     [java] java.lang.NoClassDefFoundError: com/rsc/nonBundle/Bob
     [java]     at com.rsc.vtk.impl.host.Activator.start(Activator.java:38)
     [java]     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
     [java]     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
     [java]     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
     [java]     at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:374)
     [java]     at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1067)
     [java]     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:561)
     [java]     at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:546)
     [java]     at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:459)
     [java]     at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
     [java]     at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:440)
     [java]     at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
     [java]     at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337)
     [java] Caused by: java.lang.ClassNotFoundException: com.rsc.nonBundle.Bob
     [java]     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
     [java]     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
     [java]     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
     [java]     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
     [java]     ... 15 more

I have experimented with setting osgi.compatibility.bootdelegation=false and org.osgi.framework.bootdelegation=* to no avail.

I've tried org.osgi.framework.system.packages=com.rsc.nonBundle to no avail.

I'm running with a newish copy of org.eclipse.osgi.jar (org.eclipse.osgi_3.6.2.R36x_v20110210.jar)

I'm sure I'm doing something wrong: Der Google does not show many hits on this property not working.

Any help would be appreciated.

b

Back to the top