Opzioni per la compilazione dinamica in Java 5
-
05-09-2019 - |
Domanda
Ci sono altre opzioni oltre Janino per compiliation on-the-fly e l'esecuzione di codice Java in v5? So v6 ha l'API compilatore, ma ho bisogno di lavorare con la VM v5.
I essenzialmente bisogno di prendere una stringa contenente una classe Java completo, compilarlo e caricarlo in memoria.
Soluzione
Quello che vogliamo è qualcosa di simile a Janino . Abbiamo utilizzato per anni. Si dà (nei pressi di serie) il codice e ti dà le classi in modo da poterli utilizzare. In realtà ha un bel paio di modi diversi e supporta il 1,5 zucchero sintattico e auto-boxe e così via.
Se si chiama javac, non solo si deve essere pronti a tutto lo fa, sarà quindi necessario gestire mettere la classe nel posto giusto o fare un programma di caricamento classe aggiuntiva.
Janino è molto facile. Dovrebbe essere esattamente quello che stai cercando.
Altri suggerimenti
Invocare javac programmaticamente:
http: // www.juixe.com/techknow/index.php/2006/12/12/invoke-javac-at-runtime/
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main(); String[] options = new String[] { "-classpath", classpath, "-d", outputDir, filename }; javac.compile(options);
Tutti i server app fanno questo per JSP per sempre, quindi ovviamente è possibile. Acquista il codice sorgente Tomcat forse?