java compiler-construction dynamic-compilation janino

Opciones para la compilación dinámica en Java 5



compiler-construction dynamic-compilation (3)

Invocar javac programáticamente:

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);

¿Hay otras opciones además de Janino para la compilación y ejecución sobre la marcha del código de Java en v5? Sé que v6 tiene la API del compilador, pero necesito trabajar con la VM v5.

En esencia, necesito tomar una cadena que contenga una clase completa de Java, compilarla y cargarla en la memoria.


Lo que quieres es algo así como Janino . Lo hemos usado por años. Le das el código (cerca del estándar) y te da las clases para que puedas usarlos. En realidad tiene bastantes modos diferentes y es compatible con el azúcar sintáctico 1.5 y el auto-boxeo y tal.

Si llama a javac, no solo tendrá que estar preparado para todo lo que haga, entonces tendrá que manejar la colocación de la clase en el lugar correcto o crear un cargador de clases adicional.

Janino es muy fácil. Debe ser exactamente lo que estás buscando.


Todos los servidores de aplicaciones hacen esto por JSP para siempre, así que obviamente es posible. Verifique el código fuente de Tomcat tal vez?