Duplicar posible:
Convert String to code in Java
Dynamic code execution on Javaejecutar código Java en Java
tengo una cadena que contiene: "for(int i=0 ; i<5 ; i++){System.out.println(\"*\");}"
¿Puedo ejecutar el código en esta cadena en Java?
Duplicar posible:
Convert String to code in Java
Dynamic code execution on Javaejecutar código Java en Java
tengo una cadena que contiene: "for(int i=0 ; i<5 ; i++){System.out.println(\"*\");}"
¿Puedo ejecutar el código en esta cadena en Java?
Desde Java 6, se puede compilar y ejecutar una unidad de compilación Java definida como una Cadena o un Archivo utilizando API estándar en el SDK (una unidad de compilación es básicamente todo lo que se incluye dentro de un archivo .java - paquete, importaciones, clases/interfaces/enumeraciones), tome una mira esto example. Usted no puede ejecutar un fragmento arbitrario de Java como el de su pregunta, sin embargo.
Si es posible, sería una mejor idea de integrar un lenguaje de script diferente que le permite ejecutar fragmentos de código de un programa Java - por ejemplo, JavaScript, Groovy, MVEL, BeanShell, etc.
Si lo convierte en un archivo fuente completo, puede alimentarlo al compilador Java programáticamente, pero la última vez que revisé eso solo estaba disponible si tenía instalado el SDK de Java en su máquina; no estaba disponible en máquinas con la distribución del cliente de Java. Por supuesto, esto puede haber cambiado desde entonces. Mira el paquete com.sun.tools.javac y encontrarás allí la API del compilador Java.
No, no puede ejecutar este código en su programa.
Sí, hay excepciones, pero es un tipo de "si tiene que preguntar": si aún no comprende que es imposible, entonces es imposible. Si comprende que es imposible (y por qué), entonces es posible (al menos en algunas circunstancias), usando una combinación de varios trucos sucios. –
No hay una función de la API de Java Core para hacer esto, pero se puede llamar javac
ya sea mediante el uso de Runtime.exec
o el uso de algunas clases "inseguros" de com.sun.tools.javac
He aquí un ejemplo:
http://juixe.com/techknow/index.php/2006/12/12/invoke-javac-at-runtime/
Tal vez puede ejecutar esta maravillosa como:
No creo que pueda ejecutar un String que contenga un código java.
Pero vale la pena intentarlo si puede guardarlo como un archivo fuente java y tratar de usar la clase ProcessBuilder para ejecutar.
Nunca lo intenté y no estoy seguro si es la mejor manera de hacerlo. Así que úselo con precaución :)
¡Buena suerte!
también encontró un puesto similar: Runtime class in java
Puede utilizar el [ 'JavaCompiler'] (http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html) interfaz, pero no sé los detalles. –
Si tiene la opción, no use java como entrada use JavaScript y ejecute su código a través de la [API de Java Scripting] (http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/) –
What es la importancia de este código? ¿Usas este código en algunas aplicaciones reales? – Lion