Hi, There has recently been a JVM change which has broken the Blueprint proxy code. The problem is that the proxy code used to call the zero arg constructor of the Object class when instantiating Blueprint Proxy classes, but a change in JVM behaviour meant calling anything other than the constructor of the superclass, would cause a VerifyError to be thrown. Services registered using interfaces will be OK, but if you were registering services using concrete classes that don't have a zero arg constructor, you would get the VerifyError. Looking at your stacktrace, I think you're running a slightly older version of the proxy code. In the last couple of weeks a fix was put in to restore the behaviour, so that services registered with concrete impl classes would work again. I have to admit your version of the VerifyError is slightly different to the one we were originally seeing, but it might be worth taking the latest code and see if this does fix your problem. The changes were under Jira Aries-908. Thanks
Tim Mitchell From: Bengt Rodehav <[email protected]> To: [email protected] Date: 09/10/2012 10:39 Subject: Aries Blueprint VerifyError Sent by: [email protected] I use Aries blueprint 0.3.2 running on Karaf 2.2.8. Normally this works fine but one one of the installations I get this exception: 2012-10-09 11:21:32,353 | ERROR | rint Extender: 2 | BlueprintContainerImpl | container.BlueprintContainerImpl 364 | Unable to start blueprint container for bundle se.digia.connect-claes.lafa.lafa-service org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:635)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:337)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:230)[9:org.apache.aries.blueprint:0.3.2] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_33] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_33] at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_33] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_33] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)[:1.6.0_33] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_33] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_33] at java.lang.Thread.run(Thread.java:662)[:1.6.0_33] Caused by: java.lang.VerifyError: (class: se/digia/connect/claes/lafa/service/impl/$LafaService854899564, method: <init> signature: (Ljava/lang/reflect/InvocationHandler;)V) Call to wrong initialization method at java.lang.Class.getDeclaredConstructors0(Native Method)[:1.6.0_33] at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)[:1.6.0_33] at java.lang.Class.getConstructor0(Class.java:2699)[:1.6.0_33] at java.lang.Class.getConstructor(Class.java:1657)[:1.6.0_33] at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:159) at org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:81) at org.apache.aries.proxy.impl.AbstractProxyManager.createProxy(AbstractProxyManager.java:50) at org.apache.aries.blueprint.container.BeanRecipe.addInterceptors(BeanRecipe.java:690)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:730)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)[9:org.apache.aries.blueprint:0.3.2] at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:631)[9:org.apache.aries.blueprint:0.3.2] ... 10 more What does this mean? I use java 1.6.0_33 (64 bit). I have been able to get it working on both 32- and 64 bit before. Does anyone have a clue? /Bengt Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
