I will send my bundle and my java project to your email address (privately) since I don't know Jira Ticket.
Zaid -----Original Message----- From: Clement Escoffier [mailto:[email protected]] Sent: 02 آذار, 2014 11:05 م To: Apache Felix - Users Mailing List Subject: Re: Using iPOJO API shows “ Cannot create a POJO instance, the POJO constructor cannot be found” On 2 mars 2014, at 19:56, Zaid Jamal Saeed Al Mahmoud <[email protected]> wrote: > Thank you Mr. Clement for your response. > > Before trying to use manipulation, which I already done in the past. I > wanted to show you this interesting scenario, > > This worked for me: > > new PrimitiveComponentType() > .setBundleContext(context) > .setClassName(PlainHelloImpl.class.getName()) > .addService(new Service()) > .createInstance(); // Create the instance > > But this did not work for me: > > new PrimitiveComponentType() > .setBundleContext(context) > .setClassName(PlainHelloImpl.class.getName()) > .createInstance(); // Create the instance > > > As you can see, the only difference is adding the service. What? Why? Thant’s interesting. So you mean adding the service makes it work ? Could you send me both traces. Would you be able to share your code (either privately, or attached to a Jira ticket) so I can reproduce it ? Clement > > > Zaid > > -----Original Message----- > From: Clement Escoffier [mailto:[email protected]] > Sent: 02 آذار, 2014 10:48 م > To: Apache Felix - Users Mailing List > Subject: Re: Using iPOJO API shows “ Cannot create a POJO instance, the POJO > constructor cannot be found” > > Hi, > > When using the iPOJO API, it tries to manipulate the component implement > classes at runtime (if there are not already manipulated). It looks like this > manipulation does not happen in your case. To be sure it is the issue, try to > manipulate the class first (add @Component on it, and use ant of maven to > build your bundle). > > Clement > > On 2 mars 2014, at 19:13, Zaid Jamal Saeed Al Mahmoud > <[email protected]> wrote: > >> Hey, I am trying to use iPOJO API to create component type. (I don’t want to >> use iPOJO Annotations). >> >> In my bundle start method, I have the following code: >> >> public void start(BundleContext context) { >> >> ComponentType x = new PrimitiveComponentType() >> .setBundleContext(context) >> .setClassName(InstanceFactoryImpl.class.getName()) >> .setValidateMethod("start") >> .setInvalidateMethod("stop"); >> >> >> x.start(); >> >> try { >> x.createInstance(); >> } catch (UnacceptableConfiguration e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } catch (MissingHandlerException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } catch (ConfigurationException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> >> System.out.println("and we are done!"); } >> InstanceFactoryImpl class is in the same package as the following: >> public class InstanceFactoryImpl implements >> instancefactory.InstanceFactory{ >> >> >> @Override >> public void start() { >> >> >> >> } >> >> @Override >> public void stop() { >> >> } >> >> >> >> } >> When I load my bundle to Felix framework in my java application, I get the >> following error: >> >> [ERROR] : [instancefactoryImpl.InstanceFactoryImpl-0] createInstance >> -> Cannot invoke the constructor (method not found) : >> instancefactoryImpl.InstanceFactoryImpl.<init>(org.apache.felix.ipojo. >> InstanceManager) >> java.lang.NoSuchMethodException: >> instancefactoryImpl.InstanceFactoryImpl.<init>(org.apache.felix.ipojo.InstanceManager) >> at java.lang.Class.getConstructor0(Class.java:2715) >> at java.lang.Class.getDeclaredConstructor(Class.java:1987) >> at >> org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:726) >> at >> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:923) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__M_stateChanged(LifecycleCallbackHandler.java:156) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java) >> at >> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:536) >> at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:418) >> at >> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:179) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240) >> at >> org.apache.felix.ipojo.api.ComponentType.createInstance(ComponentType.java:79) >> at instancefactoryImpl.Activator.start(Activator.java:37) >> at >> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) >> at org.apache.felix.framework.Felix.activateBundle(Felix.java:2146) >> at org.apache.felix.framework.Felix.startBundle(Felix.java:2064) >> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955) >> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:942) >> at embedder.HostApplication.<init>(HostApplication.java:148) >> at embedder.Embedder.main(Embedder.java:12) >> [ERROR] instancefactoryImpl.InstanceFactoryImpl : Cannot create a >> POJO instance, the POJO constructor cannot be found >> org.apache.felix.ipojo.ConfigurationException: The configuration is not >> correct for the type instancefactoryImpl.InstanceFactoryImpl : Cannot create >> a POJO instance, the POJO constructor cannot be found >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:328) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240) >> at >> org.apache.felix.ipojo.api.ComponentType.createInstance(ComponentType.java:79) >> at instancefactoryImpl.Activator.start(Activator.java:37) >> at >> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) >> at org.apache.felix.framework.Felix.activateBundle(Felix.java:2146) >> at org.apache.felix.framework.Felix.startBundle(Felix.java:2064) >> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955) >> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:942) >> at embedder.HostApplication.<init>(HostApplication.java:148) >> at embedder.Embedder.main(Embedder.java:12) >> Caused by: org.apache.felix.ipojo.ConfigurationException: Cannot create a >> POJO instance, the POJO constructor cannot be found >> at >> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:191) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319) >> ... 10 more >> Caused by: java.lang.RuntimeException: Cannot create a POJO instance, the >> POJO constructor cannot be found >> at >> org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:766) >> at >> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:923) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__M_stateChanged(LifecycleCallbackHandler.java:156) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java) >> at >> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:536) >> at org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:418) >> at >> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:179) >> ... 11 more >> Caused by: java.lang.NoSuchMethodException: >> instancefactoryImpl.InstanceFactoryImpl.<init>(org.apache.felix.ipojo.InstanceManager) >> at java.lang.Class.getConstructor0(Class.java:2715) >> at java.lang.Class.getDeclaredConstructor(Class.java:1987) >> at >> org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:726) >> ... 17 more >> I am getting the error at the following line: >> >> x.createInstance(); >> I tried to explicitly define a constructor, and to add a method called >> "init". All this failed, and the same error keeps showing. What should I do? >> Thanks? >> >> >> >> Kind Regards, >> Zaid Almahmoud >> Research Assistant >> >> Khalifa University of Science, Technology, and Research Abu Dhabi - >> United Arab Emirates >> TEL: 00971-2-401-8178 >> MOB: 00971-50-9619601 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

