Un problema que ocurre al ejecutar esto desde una GUI java es que se ejecuta en segundo plano. Así que no puede ver el símbolo del sistema en absoluto.
Para evitar esto, debe ejecutar java.exe a través de "cmd.exe" Y "iniciar". No sé por qué, pero si pones "cmd/c start" delante, muestra el símbolo del sistema mientras se ejecuta.
Sin embargo, el problema con "start" es que si hay un espacio en la ruta de la aplicación (que el camino hacia el exe java por lo general tienen como lo es en C: \ Archivos de programa \ Java \ jre6 \ bin \ java.exe o similar), y luego el inicio simplemente falla con "can not find c: \ Program"
Debes poner comillas alrededor de C: \ Program Files \ Java \ jre6 \ bin \ java.exe Ahora el inicio se queja de los parámetros que pasa a java.exe: "El sistema no puede encontrar el archivo -cp".
Escapar el espacio en "Archivos de programa" con una barra diagonal inversa tampoco funciona. Entonces la idea es no usar espacio. Genere un archivo temporal con la extensión bat y luego ponga su comando con espacios allí y ejecute el bat. Sin embargo, al ejecutar un inicio de compilación, no finaliza cuando finaliza, , por lo que debe colocar "exit" al final del archivo de proceso por lotes.
Esto todavía parece asqueroso.
Por lo tanto, buscando alternativas, he encontrado que el uso de comillas de espacio de cotización en el espacio de "Archivos de programa" en realidad funciona con inicio.
En la clase anterior EJECUTAR cambio del constructor de cadena anexa a:
append("cmd /C start \"Some title\" ").
append(java.lang.System.getProperty("java.home").replaceAll(" ", "\" \"")).
append(java.io.File.separator).
append("bin").
append(java.io.File.separator).
append("java").
append(" ").
append(new java.io.File(".").getAbsolutePath()).
append(java.io.File.separator).
append(CLASS_TO_BE_EXECUTED).
Así que si entiendo bien, tiene varias clases con métodos main() y desea iniciarlas en procesos separados? –
¿Qué tal si ejecutas ("java.exe", CLASS_TO_BE_EXECUTED.class.getName())? –
cómo tomar la entrada de un usuario para la clase java que se ejecuta como un proceso iniciado por un programa java, usando algo como br.readLine() – paragjain