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

Reply via email to