You can use reflection ( "method.setAccessable(true)" ) to call
"defineClass" if you need to cast instances of generated class.
UIGenerator will define generated class in MYNEWComboBoxUIGenerator.
----- Original Message -----
From: "Chris Houghten" <[EMAIL PROTECTED]>
To: "BCEL Users List" <[EMAIL PROTECTED]>
Sent: Monday, November 25, 2002 9:23 PM
Subject: Re: making classes available
> I did call defineClass, but don't know if I am using an appropriate
> Classloader.
> I am working from an article that was in the February 2002 issue Java
> Developer's Journal by Norman Richards.
>
>
> here is a portion of my UIGenerator class:
>
> public class MYNEWComboBoxUIGenerator extends ClassLoader implements
> Constants {
> private InstructionFactory _factory;
> private ConstantPoolGen _cp;
> private ClassGen _cg;
>
> public ComponentUI generate(UIManager.LookAndFeelInfo lf, JComponent
comp)
> {
> new GuardianComboBoxUI$GuardianComboPopupGenerator().generate(lf,
> comp);
> new
GuardianComboBoxUI$PropertyChangeHandler2Generator().generate(lf,
> comp);
> String lfName =
> lf.getClassName().substring(lf.getClassName().lastIndexOf(".") + 1,
> lf.getClassName().length() - 11);
> String lfPackage = lf.getClassName().substring(0,
> lf.getClassName().lastIndexOf("."));
> String className = "combo_research.Guardian" + lfName +
"ComboBoxUI";
> String superClassName = lfPackage + "." + lfName + "ComboBoxUI";
> //need to get rid of last node in classname
> _cg = new ClassGen(className, superClassName, "", ACC_PUBLIC |
> ACC_SUPER, new String[] { });
> _cg.addEmptyConstructor(ACC_PUBLIC);
> _cp = _cg.getConstantPool();
> _factory = new InstructionFactory(_cg, _cp);
> // createMethod_0();
> createMethod_1(className);
> createMethod_2(className);
> createMethod_3(className);
> createMethod_4(className);
> createMethod_5(className);
> createMethod_6(className);
> byte[] data = _cg.getJavaClass().getBytes();
> Class c = defineClass(data, 0, data.length);
>
>
>
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: "BCEL Users List" <[EMAIL PROTECTED]>
> Sent: Monday, November 25, 2002 1:58 PM
> Subject: Re: making classes available
>
>
> > Hi Chris,
> >
> > Once you have the bytecode for the class, you can use
> ClassLoader.defineClass to
> > make it available to the JVM. Make sure you're using an appropriate
> ClassLoader.
> >
> > God bless,
> > -Toby Reyelts
> >
> > > What I need is an example of generating a class at runtime and just
> making it
> > > available to be accessed at any future point instead of returning an
> instance of
> > > it immediately.
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>