Stephan Bergmann wrote:
Rony G. Flatscher wrote:
Hi Jim,
...
* *creating a class on the fly* by creating the necessary byte codes
     saved in a byte array with the ClassLoader's /|defineClass(String
     name, byte[] b, int off, int len)| /
         o works, if using URE to access OOo (i.e. script invoked from
           outside OOo),
         o goes out to lunch (no Java catchable exceptions!), if the
           same script is dispatched via OOo, i.e. the OOo
           ScriptingFramework.

           The only information that can be gathered from the JNI/C++
           code is a Throwable message (/|getMessage()|/) of
           "com/sun/star/awt/XActionListener". This information seems
           to come from the defineClass(...) invocation of the OOo
           class loader named "sun.misc.Launcher$AppClassLoader".
...
Changed the JNI code to get the exception type and it is: "java.lang.NoClassDefFoundError: com/sun/star/awt/XActionListener".

Not sure how your code looks like exactly; how do you obtain the class loader at which you call defineClass?

O.K.: the BSF framework will be used to create an event adapter dynamically. Evenutally this uses org.apache.bsf.util.event.generator.EventAdapterGenerator (generates the byte code according to the supplied argument "listener type" class object in a static method makeEventAdapterClass()) in which the class loader gets created:

     public static AdapterClassLoader ldr = new AdapterClassLoader();
(The org.apache.bsf.util.event.generator.AdapterClassLoader extends ClassLoader.)

Regards,

---rony

Reply via email to