You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Clement Escoffier (JIRA)" <ji...@apache.org> on 2008/07/28 19:23:31 UTC

[jira] Resolved: (FELIX-649) "Expecting to find object/array on stack" Error when asking for instance of an iPOJO component

     [ https://issues.apache.org/jira/browse/FELIX-649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Clement Escoffier resolved FELIX-649.
-------------------------------------

    Resolution: Fixed

Nice catch !
The issue comes from the super constructor arguments that were not loaded. This corrupts the class, as the super constructor cannot be called (linked) correctly.

I commit a fix in the trunk version (revision 680406).
I also add your test case in my test suite.

> "Expecting to find object/array on stack" Error when asking for instance of an iPOJO component
> ----------------------------------------------------------------------------------------------
>
>                 Key: FELIX-649
>                 URL: https://issues.apache.org/jira/browse/FELIX-649
>             Project: Felix
>          Issue Type: Bug
>          Components: iPOJO
>    Affects Versions: iPOJO-0.8.0
>         Environment: iPOJO 0.8.0
> felix 1.0.3
>            Reporter: Benjamin Strappazzon
>            Assignee: Clement Escoffier
>
> Here is my case, I have these two classes in a bundle
> public class A {
>     private String name;
>     public A(final String n) {
>         name = n;
>     }
> }
> public class B extends A {
>     public B() {
>         super("test");
>         System.out.println("plop");
>     }
> }
> What I want to do is to create a component with class B and ask for an instance, this is the content of metadata.xml :
> <iPOJO>
>   <component className="myPackage.B" immediate="true" factory="false">
>   </component>
>   <instance component="myPackage.B" name="b"></instance>
> </iPOJO>
> When I try to install this bundle on a felix gateway I get the following error : 
> ERROR: EventDispatcher: Error during dispatch. (java.lang.VerifyError: (class: org/ow2/shelbie/cli/B, method: <init> signature: (Lorg/apache/felix/ipojo/InstanceManager;)V) Expecting to find object/array on stack)
> java.lang.VerifyError: (class: org/ow2/shelbie/cli/B, method: <init> signature: (Lorg/apache/felix/ipojo/InstanceManager;)V) Expecting to find object/array on stack
> 	at java.lang.Class.getDeclaredConstructors0(Native Method)
> 	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
> 	at java.lang.Class.getConstructor0(Class.java:2671)
> 	at java.lang.Class.getDeclaredConstructor(Class.java:1953)
> 	at org.apache.felix.ipojo.InstanceManager.createPojoObject(InstanceManager.java:538)
> 	at org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:698)
> 	at org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:157)
> 	at org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
> 	at org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:409)
> 	at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:299)
> 	at org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:146)
> 	at org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:250)
> 	at org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:194)
> 	at org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:316)
> 	at org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:76)
> 	at org.apache.felix.ipojo.Extender.parse(Extender.java:238)
> 	at org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:180)
> 	at org.apache.felix.ipojo.Extender.bundleChanged(Extender.java:101)
> 	at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:690)
> 	at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:619)
> 	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:532)
> 	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3568)
> 	at org.apache.felix.framework.Felix._startBundle(Felix.java:1591)
> 	at org.apache.felix.framework.Felix.startBundle(Felix.java:1519)
> 	at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java:1104)
> 	at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:258)
> 	at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.