-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Andrew Haley schrieb:
Christoph Höger wrote:
> Hi,
>
> I do not know where to ask that, so I try it here:
>
> I want to load a (dynamically created) class via URL ClassLoader and
> then invoke a public static method on it.
>
> Here is the code:
>
> Class lexerDefs = Class.forName("parser.LexerDefs", true, loader);
>
> Method getLexerDefs = null;
>
> try {
> getLexerDefs = lexerDefs.getMethod("lexerDefs", new Class[] {});
> } catch (NoSuchMethodException e) {
> fail("Class " + lexerDefs.getName() + " has no method
lexerDefs()\n"
> + e.getMessage());
> }
>
> parser.Options.inputFile = this.inputFile;
>
> System.err.println("invoking: " + getLexerDefs.toString());
>
> Object retObject = getLexerDefs.invoke(null, new Object[0]);
>
> But all I get is:
> Class test.TestParserGenerator can not access a member of class
> parser.LexerDefs with modifiers "public static"
>
> So loading class seems to work, but I cannot invoke a _public_ method? Why?
>
> Anyone knows about reflection?
Yes. Does a public static method with that exact signature "()" exist?
In the classpath? What if you call it directly?
Andrew.
Hi,
the problem is solved (thanks again to Alexei Mokeev who answered off
list). My external class wasn't public enough ;).
The error message confused me, as it stated it could not access the
method and not the class.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora -
http://enigmail.mozdev.org
iD8DBQFIwRonhMBO4cVSGS8RAiPrAKC9JiH5PlWyKayfyGP2E5fnUK+b4wCcDJqt
eZiZncqIz31roLe335NUy0k=
=wM50
-----END PGP SIGNATURE-----