Hi Tim, I got something that appears to work for me with throwing a UnableToProxyException, see ARIES-666 and rev 1128548. You should review it :-)
However, it looks like you fell into the common trap for people doing bytecode modification of not preserving the SerialVersionUID. I'm finding out just how many of the geronimo Serializable classes don't define it.... see ARIES-665. thanks david jencks On May 23, 2011, at 10:45 PM, Timothy Ward wrote: > > 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 >>>> >>> >> >
