Ich habe eine App, die ich erweiterbar machen möchte, indem ich Benutzern die Möglichkeit gebe, in Groovy Klassen zu definieren und schließlich einige Schnittstellen zu implementieren.Kompilieren und Verwenden von Groovy-Klassen aus Java zur Laufzeit?
Der Schlüsselaspekt ist, dass es zur Laufzeit interpretiert/kompiliert werden sollte. I.e. Ich brauche meine App, um die .groovy
zu nehmen und es zu kompilieren. Es während des Bootens zu tun ist in Ordnung.
Dann sollte natürlich meine App diese Klasse instanziieren können.
Ich sehe zwei Lösungen:
1) Kompilieren, während die App läuft, die Klassen auf Classpath irgendwo setzen, und dann nur die Klassen laden, sie immer vorgibt waren.
2) Eine etwas schlauere Methode - Aufruf einer Compiler-API und etwas Classloading-Magie, damit mein System-Classloader sie sehen kann.
Wie würde ich Option 2) tun?
Irgendwelche anderen Ideen?