java.lang.NoClassDefFoundError thrown when accessing registered test component Re: Registration done - next steps. Re: Problems Registering a XPCOM component in XULrunner environment Re: Question: How to reliably create a XPCOM component for use with javaxpcom?
"Martini" <[email protected]>
| Newsgroups | gmane.comp.mozilla.devel.java |
|---|---|
| Organization | http://groups.google.com |
| Message-ID | <1155132327.489077.136890__35832.6872963973$1155132635$gmane$org@n13g2000cwa.googlegroups.com> |
The test component that I have implements a generic factory of an object that implements the dsTestEntryPoint interface through the macro: NS_GENERIC_FACTORY_CONSTRUCTOR(TestEntryPoint) What I am seeing though is that if I attempt to create the instance via componentManager.createInstanceByContractID(NS_TESTCOMPONENT_CONTRACTID, null, dsTestEntryPoint.DSTESTENTRYPOINT_IID); I get an exception being thrown from the JavaXPCOM layer. java.lang.NoClassDefFoundError: org/mozilla/xpcom/dsTestEntryPoint at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native Method) at org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:140) at $Proxy4.queryInterface(Unknown Source) at TestCustomComponent.main(TestCustomComponent.java:124) I'm not sure what to make of it. Does anyone have experience with this? Martin Martini wrote: > Benjamin, > > Thanks for the response - that makes sense to me right now. > I forced re-registration programmatically as you suggested which works > well. > > Now the next steps are really puzzling me - the test component that I > have implements a generic factory of an object that implements the > dsTestEntryPoint interface through the macro: > NS_GENERIC_FACTORY_CONSTRUCTOR(TestEntryPoint) > > What I am seeing though is that if I attempt to create the instance via > > componentManager.createInstanceByContractID(NS_TESTCOMPONENT_CONTRACTID, > null, dsTestEntryPoint.DSTESTENTRYPOINT_IID); > > I get an exception being thrown from the JavaXPCOM layer. > > > java.lang.NoClassDefFoundError: org/mozilla/xpcom/dsTestEntryPoint > at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native > Method) > at > org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:140) > at $Proxy4.queryInterface(Unknown Source) > at TestCustomComponent.main(TestCustomComponent.java:124) > > > I'm not sure what to make of it. > > > Martin > > > Benjamin Smedberg wrote: > > Martini wrote: > > > I just realized there's a more succinct way to describe my problem: > > > I have created a XPCOM standalone component that provides some service > > > that I want to access in my self contained XUL dev environment. > > > How do I register it so that it is available for use just like the > > > components in xulrunner/components > > > > What environment is this? A XULRunner app, or embedded? If it's a XR app, > > all you need to do is put the component in <app>/components and force > > reregistration of components. That's best done by changing the buildid in > > application.ini > > > > In embedded contexts, you will need to specify a directory to look for > > components during XPCOM initialization. You may also need to force component > > registration programmatically (nsIComponentRegistrar.autoRegister(null)). > > > > > The obvious way of registering with regxpcom is not resulting in the > > > updated components/*.dat files. > > > > No toolkit-based apps should ever use regxpcom. It is a holdover from the > > days when we kept compreg.dat in the application directory and is totally > > unreliable. > > > > --BDS