servidor - Ejecutando código java compilado en tiempo de ejecución
http 500 no se puede compilar la clase para jsp (1)
Quiero ejecutar el código compilado antes. Compilé de todos modos, no es importante cómo compilar, pero ejecutar el código es un problema.
Mi code.java
public class code{
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Luego compilé este código y se code.class
(en el directorio D://
). Ahora quiero ejecutar este archivo compilado. Mi código es:
import java.io.IOException;
import java.io.InputStream;
public class compiler {
public static void main(String[] args) {
final String dosCommand = "cmd /c java code";
final String location = "D://";
try {
final Process process = Runtime.getRuntime().exec(
dosCommand + " " + location);
final InputStream in = process.getInputStream();
int ch;
while((ch = in.read()) != -1) {
System.out.print((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Aquí no hay error pero este código no hace nada. Ningún cmd abierto, nada. ¿Dónde estoy equivocado? ¿Que debería hacer?
actual su comando cmd
es incorrecto.
cmd /c java code D:/ /*this is not correct cmd command*/
debería ser
cmd /c java -cp D:/ code
cuando ejecuta un archivo .class en una carpeta diferente pero no en la carpeta actual, use -cp
para especificar la ruta de clase
there is no error
realidad, no. Pero no los capturó. Para capturar errores, puede usar getErrorStream()
código de ejemplo
public class compiler {
public static void main(String[] args) {
final String dosCommand = "cmd /c java -cp ";
final String classname = "code";
final String location = "D://";
try {
final Process process = Runtime.getRuntime().exec(dosCommand + location + " " + classname);
final InputStream in = process.getInputStream();
final InputStream in2 = process.getErrorStream();
int ch, ch2;
while ((ch = in.read()) != -1) {
System.out.print((char) ch);
}
while ((ch2 = in2.read()) != -1) {
System.out.print((char) ch2); // read error here
}
} catch (IOException e) {
e.printStackTrace();
}
}
}