I saw this...
...
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.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:345)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1207)
at
org.apache.xbean.osgi.bundle.util.BundleClassLoader.loadClass(BundleClassLoader.java:75)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at org.apache.openejb.cdi.CdiScanner.load(CdiScanner.java:146)
at org.apache.openejb.cdi.CdiScanner.init(CdiScanner.java:128)
at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:193)
at
org.apache.geronimo.openejb.ThreadSingletonServiceAdapter.initialize(ThreadSingletonServiceAdapter.java:99)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:49)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:682)
... 68 more
Caused by: org.osgi.framework.hooks.weaving.WeavingException: There was a
serious error trying to weave the class bsh.util.BeanShellBSFEngine. 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)
... 91 more
Caused by: java.lang.RuntimeException: Unable to load the super type
org.apache.bsf.util.BSFEngineImpl for class bsh.util.BeanShellBSFEngine.
at
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.visit(AbstractWovenProxyAdapter.java:260)
at org.objectweb.asm.ClassAdapter.visit(Unknown Source)
at org.objectweb.asm.commons.SerialVersionUIDAdder.visit(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)
... 96 more
Caused by: java.lang.ClassNotFoundException: org.apache.bsf.util.BSFEngineImpl
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
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 java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.visit(AbstractWovenProxyAdapter.java:214)
... 102 more
running the cdi tck. I think it means that the weaving code is converting a
NoClassDefFoundError due to a missing superclass into a ClassFormatError. This
seems like a mistake. A lot of code can deal with a NoClassDefFoundError and
its more or less expected sometimes but ClassFormatError is much less usual.
In particular OpenWebBeans tries to load every class to look for annotations
and doesn't worry if it cant load the class but it's not set up to deal with
ClassFormatErrors.
I'm thinking this might be a good idea:
Index:
proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
===================================================================
---
proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
(revision 1134136)
+++
proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
(working copy)
@@ -257,7 +257,8 @@
} catch (ClassNotFoundException e) {
// If this happens we're about to hit bigger trouble on verify, so we can
// just throw it
- throw new
RuntimeException(NLS.MESSAGES.getMessage("cannot.load.superclass",
superName.replace('/', '.'), typeBeingWoven.getClassName()), e);
+ UnableToProxyException u = new UnableToProxyException(name, e);
+ throw new
RuntimeException(NLS.MESSAGES.getMessage("cannot.load.superclass",
superName.replace('/', '.'), typeBeingWoven.getClassName()), u);
}
}
and it seems to fix the immediate problem.
thoughts?
thanks
david jencks