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 | <1155132009.962590.99300__9746.38061966306$1155132339$gmane$org@b28g2000cwb.googlegroups.com> |
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