hallo Stackoverflow-Community,Access-Schnittstelle eines benutzerdefinierten Eclipse-Plugin zur Laufzeit
Ich habe eine benutzerdefinierte Eclipse-Plugin, die die Schnittstelle
public interface IMatchResultEvaluator {
String evaluateMatchResult(MatchResult match);
}
definiert.
Jetzt möchte ich der Benutzer in der Lage sein, diese Schnittstelle zur Laufzeit zu implementieren. Also möchte ich, dass er den Code für die Methode evaluateMatchResult über eine GUI schreiben kann, dann möchte ich seine Klasse mit dem Java 6-Compiler api kompilieren und dann möchte ich die Klasse mithilfe von Reflektion laden. Um dies zu tun, müsste ich zur Laufzeit auf die Klasse IMatchResultEvaluator zugreifen. Wie geht das?
Mit Hilfe der Antwort des Svasa versuchte ich bereits den javac-Compiler aufzurufen, die
Bundle bundle = Platform.getBundle("com.florian.regexfindandreplace");
String bundleLocation = bundle.getLocation();
String[] locs = bundleLocation.split("reference:file:/");
String interfaceFileLoc = locs[1] + bundle.getEntry("/IMatchResultEvaluator");
ProcessBuilder processBuilder = new ProcessBuilder(javaCompiler.getAbsolutePath(), "-classpath",
interfaceFileLoc, myImplFile.getAbsolutePath());
Process p = processBuilder.start();
Art und Weise aber, dass kompilieren nicht, weil das Symbol IMatchResultEvaluator nicht gefunden wurde. Was muss ich hier ändern?
Danke für jede Hilfe.
Wie sieht die GUI aus? Es enthält eine Texteingabe für den Implementierungskörper von 'evaluateMatchResult'? – SomeDude
Ja, Sie haben die Idee. – user172501