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
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom