Hi,
ich bin mir nicht sicher, ob jemand hier die Erfahrung dafür hat, aber ich versuchs mal:
Ich habe einen Parsergenerator in java, der u.A. einen Lexer erzeugt. Diesen Lexer möchte ich gern testen - dazu habe ich einen junit Test geschrieben, der die erzeugte (und compilierte) .class Datei einliest und eine statische Methode darauf ausführen soll.
Hier ist der Code:
Aber ich kriege nur:
Aber warum kann ich keine "public static" Methode aufrufen???
ich bin mir nicht sicher, ob jemand hier die Erfahrung dafür hat, aber ich versuchs mal:
Ich habe einen Parsergenerator in java, der u.A. einen Lexer erzeugt. Diesen Lexer möchte ich gern testen - dazu habe ich einen junit Test geschrieben, der die erzeugte (und compilierte) .class Datei einliest und eine statische Methode darauf ausführen soll.
Hier ist der Code:
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]);
Aber ich kriege nur:
Code:
[junit] Class test.TestParserGenerator can not access a member of class parser.LexerDefs with modifiers "public static"
[junit] java.lang.IllegalAccessException: Class test.TestParserGenerator can not access a member of class parser.LexerDefs with modifiers "public static"
Aber warum kann ich keine "public static" Methode aufrufen???