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

Reply via email to