Hi David,

The weaving proxying works by adding a small amount of proxy code to any class 
that gets loaded. In this case the proxy code is unable to properly weave 
org.apache.sshd.common.keyprovider.FileKeyPairProvider because it can't find 
whether Exception and PEMReader have any common supertypes. There are a couple 
of options here:

Fix the OSGiFriendlyClassWriter so it works across bundlesChange the 
OSGiFriendlyClassWriter thrown exception so that it is an 
UnableToProxyException wrappered in a RuntimeException. This will prevent the 
WeavingHook from failing the class load. (See the try/catch in ProxyWeavingHook 
for why).
Change the OSGiFriendlyClassWriter to return Object in these situations
I have a feeling that option 2 is right for you in the short term, I will try 
to get option 1 working in the near future.

Regards,

Tim



> Subject: Re: Problem with  proxy 0.4-SNAPSHOT?
> From: [email protected]
> Date: Mon, 23 May 2011 11:53:36 -0700
> To: [email protected]
> 
> Hi Timothy,
> 
> I poked around using PackageAdmin and there don't appear to be any bundles 
> exporting org.bouncycastle.openssl when this exception occurs.  I'm kind of 
> wondering why anyone would care what the common superclass of Exception and 
> PEMReader was.
> 
> Is there any description of how this weaving proxying works and which classes 
> it applies to?
> 
> Looking at the stack trace a bit more I wonder if this problem is entirely 
> generated by the weaving.  The karaf blueprint plan involved has this:
> 
>     <bean id="keyPairProvider" 
> class="org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider">
>         <property name="path" value="${hostKey}"/>
>     </bean>
> 
> The user code in the stack trace is:
> 
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.static_init_adba91ec_bc37_40fd_b525_04d6fddc476d0(AbstractGeneratorHostKeyProvider.java:44)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.<clinit>(AbstractGeneratorHostKeyProvider.java)
> 
> > 
> 
> AbstractGeneratorHostKeyProvider is the superclass of 
> SimpleGeneratorHostKeyProvider and neither mention PEMReader.  The other 
> subclass of AbstractGeneratorHostKeyProvider is PEMGeneratorHostKeyProvider 
> which does use PEMReader.  Looking at the class file for 
> AbstractGeneratorHostKeyProvider in emacs I don't see PEMReader.  So I would 
> guess that the reference to PEMReader might have been added by the weaving.
> 
> I don't have the time to pursue this further, and it looks like it could 
> involve a lot of work to make reliable.  I think I will have to try patching 
> application 0.3 so it works.
> 
> thanks
> david jencks
> 
> 
> 
> On May 23, 2011, at 1:37 AM, Timothy Ward wrote:
> 
> > 
> > Hi David,
> > 
> > In order to support weaving, and to dramatically improve proxying 
> > performance, it was necessary to change the proxying API away from one that 
> > required you to use reflection. This was a breaking change for all clients 
> > but has improved proxy performance by nearly ten times, and made the 
> > implementation much more flexible. As a result, yes, you do need to upgrade 
> > every component to use the new proxy code.
> > 
> > I'm afraid I'm out of the office for a week and can't put a fix in, but I 
> > would look at using the Bundle Wiring API to follow package imports and 
> > locate the correct bundle to load the class resource from. I can look at 
> > this next week if you like.
> > 
> > Regards,
> > 
> > Tim
> > 
> > 
> > 
> >> From: [email protected]
> >> Subject: Problem with  proxy 0.4-SNAPSHOT?
> >> Date: Mon, 23 May 2011 00:01:21 -0700
> >> To: [email protected]
> >> 
> >> It appears that to use application 3.1-SNAPSHOT you need to upgrade all 
> >> the other aries components.  Is this really the case or is there 
> >> over-enthusiastic lets-use-the-newest-version going on?
> >> 
> >> I've had to upgrade to proxy 0.4-SNAPSHOT and am getting this error:
> >> 
> >> geronimo> 2011-05-22 22:24:12,684 ERROR [ProxyWeavingHook] There was a 
> >> serious error trying to weave the class 
> >> org.apache.sshd.common.keyprovider.FileKeyPairProvider. See the associated 
> >> exception for more information.
> >> java.lang.RuntimeException: The class null and 
> >> org/bouncycastle/openssl/PEMReader do not have a common super class.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.OSGiFriendlyClassWriter.getCommonSuperClass(OSGiFriendlyClassWriter.java:112)
> >>        at org.objectweb.asm.ClassWriter.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
> >>        at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
> >>        at org.objectweb.asm.commons.JSRInlinerAdapter.visitEnd(Unknown 
> >> Source)
> >>        at org.objectweb.asm.MethodAdapter.visitEnd(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.call(WovenClassImpl.java:129)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:154)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:68)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:596)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> >>        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.static_init_adba91ec_bc37_40fd_b525_04d6fddc476d0(AbstractGeneratorHostKeyProvider.java:44)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.<clinit>(AbstractGeneratorHostKeyProvider.java)
> >>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> >> Method)
> >>        at 
> >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> >>        at 
> >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> >>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> >>        at 
> >> org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:270)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:842)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:269)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:708)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)
> >>        at 
> >> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:813)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:787)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:768)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:722)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:154)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:641)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:332)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:228)
> >>        at 
> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >>        at java.lang.Thread.run(Thread.java:680)
> >> 2011-05-22 22:24:12,703 ERROR [BlueprintContainerImpl] Unable to start 
> >> blueprint container for bundle org.apache.karaf.shell.ssh
> >> org.osgi.service.blueprint.container.ComponentDefinitionException: Error 
> >> when instanciating bean keyPairProvider of class class 
> >> org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:271)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:708)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)
> >>        at 
> >> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:813)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:787)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:768)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:722)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:154)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:641)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:332)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:228)
> >>        at 
> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >>        at java.lang.Thread.run(Thread.java:680)
> >> Caused by: java.lang.ClassFormatError: Unexpected error from weaving hook.
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:74)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:596)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> >>        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.static_init_adba91ec_bc37_40fd_b525_04d6fddc476d0(AbstractGeneratorHostKeyProvider.java:44)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.<clinit>(AbstractGeneratorHostKeyProvider.java)
> >>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> >> Method)
> >>        at 
> >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> >>        at 
> >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> >>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> >>        at 
> >> org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:270)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:842)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:269)
> >>        ... 25 more
> >> Caused by: org.osgi.framework.hooks.weaving.WeavingException: There was a 
> >> serious error trying to weave the class 
> >> org.apache.sshd.common.keyprovider.FileKeyPairProvider. See the associated 
> >> exception for more information.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:75)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.call(WovenClassImpl.java:129)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:154)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:68)
> >>        ... 46 more
> >> Caused by: java.lang.RuntimeException: The class null and 
> >> org/bouncycastle/openssl/PEMReader do not have a common super class.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.OSGiFriendlyClassWriter.getCommonSuperClass(OSGiFriendlyClassWriter.java:112)
> >>        at org.objectweb.asm.ClassWriter.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
> >>        at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
> >>        at org.objectweb.asm.commons.JSRInlinerAdapter.visitEnd(Unknown 
> >> Source)
> >>        at org.objectweb.asm.MethodAdapter.visitEnd(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> >>        ... 51 more
> >> 
> >> After fixing the code to show the original class names I get:
> >> 
> >> java.lang.RuntimeException: The class java/lang/Exception and 
> >> org/bouncycastle/openssl/PEMReader do not have a common super class.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.OSGiFriendlyClassWriter.getCommonSuperClass(OSGiFriendlyClassWriter.java:113)
> >>        at org.objectweb.asm.ClassWriter.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
> >>        at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
> >>        at org.objectweb.asm.commons.JSRInlinerAdapter.visitEnd(Unknown 
> >> Source)
> >>        at org.objectweb.asm.MethodAdapter.visitEnd(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.call(WovenClassImpl.java:129)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:154)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:68)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:596)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> >>        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.static_init_39c85b92_f2db_471a_9068_6cf8deb0066d0(AbstractGeneratorHostKeyProvider.java:44)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.<clinit>(AbstractGeneratorHostKeyProvider.java)
> >>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> >> Method)
> >>        at 
> >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> >>        at 
> >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> >>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> >>        at 
> >> org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:270)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:842)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:269)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:708)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)
> >>        at 
> >> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:813)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:787)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:768)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:722)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:154)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:641)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:332)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:228)
> >>        at 
> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >>        at java.lang.Thread.run(Thread.java:680)
> >> 2011-05-22 23:53:41,008 ERROR [BlueprintContainerImpl] Unable to start 
> >> blueprint container for bundle org.apache.karaf.shell.ssh
> >> org.osgi.service.blueprint.container.ComponentDefinitionException: Error 
> >> when instanciating bean keyPairProvider of class class 
> >> org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:271)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:708)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:71)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:79)
> >>        at 
> >> org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:60)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:813)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:787)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:768)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:722)
> >>        at 
> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:98)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:220)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:154)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:641)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:332)
> >>        at 
> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:228)
> >>        at 
> >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >>        at 
> >> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
> >>        at 
> >> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >>        at 
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >>        at java.lang.Thread.run(Thread.java:680)
> >> Caused by: java.lang.ClassFormatError: Unexpected error from weaving hook.
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:74)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:596)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
> >>        at 
> >> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
> >>        at 
> >> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
> >>        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.static_init_39c85b92_f2db_471a_9068_6cf8deb0066d0(AbstractGeneratorHostKeyProvider.java:44)
> >>        at 
> >> org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider.<clinit>(AbstractGeneratorHostKeyProvider.java)
> >>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> >> Method)
> >>        at 
> >> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> >>        at 
> >> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> >>        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> >>        at 
> >> org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:270)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:842)
> >>        at 
> >> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:269)
> >>        ... 25 more
> >> Caused by: org.osgi.framework.hooks.weaving.WeavingException: There was a 
> >> serious error trying to weave the class 
> >> org.apache.sshd.common.keyprovider.FileKeyPairProvider. See the associated 
> >> exception for more information.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:75)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.call(WovenClassImpl.java:129)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)
> >>        at 
> >> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:154)
> >>        at 
> >> org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:68)
> >>        ... 46 more
> >> Caused by: java.lang.RuntimeException: The class java/lang/Exception and 
> >> org/bouncycastle/openssl/PEMReader do not have a common super class.
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.OSGiFriendlyClassWriter.getCommonSuperClass(OSGiFriendlyClassWriter.java:113)
> >>        at org.objectweb.asm.ClassWriter.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.Frame.a(Unknown Source)
> >>        at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
> >>        at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
> >>        at org.objectweb.asm.commons.JSRInlinerAdapter.visitEnd(Unknown 
> >> Source)
> >>        at org.objectweb.asm.MethodAdapter.visitEnd(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at org.objectweb.asm.ClassReader.accept(Unknown Source)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> >>        at 
> >> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> >>        ... 51 more
> >> 
> >> I'd guess that the situation hinted at in the javadoc is occurring:
> >> 
> >>  /**
> >>   * We provide an implementation that doesn't cause class loads to occur. 
> >> It may
> >>   * not be sufficient because it expects to find the common parent using a 
> >> single
> >>   * classloader, though in fact the common parent may only be loadable by 
> >> another
> >>   * bundle from which an intermediate class is loaded
> >>   */
> >> 
> >> 
> >> I'm not sure how to proceed here.  Any suggestions?
> >> 
> >> thanks
> >> david jencks
> >> 
> >                                       
> 
                                          

Reply via email to