I have an app which I'd like to make extensible by letting users define classes in Groovy, eventually implementing some interfaces.
The key aspect is that it should be interpreted/compiled at runtime. I.e. I need my app to take the .groovy and compile it. Doing it during boot is ok.
Then, of course, my app should be able to instantiate that class.
I see two solutions:
1) Compile while the app runs, put the classes somewhere on classpath, and then just load the classes, pretending they were always there.
2) Some smarter way - calling a compiler API and some classloading magic to let my system classloader see them.
How would I do option 2)?
Any other ideas?