Ejecutar archivo .exe en Java desde la ubicación del archivo

Tengo que abrir un archivo .exe de mi progtwig Java. Así que intenté seguir el código Primero.

Process process = runtime.exec("c:\\program files\\test\\test.exe"); 

Pero estaba obteniendo un error. Luego descubrí que el exe debe iniciarse desde esa ubicación que es c: // archivos de progtwig / prueba / solo entonces se abrirá sin errores. Así que decidí escribir un archivo .bat y ejecutarlo para que se copie a esa ubicación y ejecute el archivo .exe.

Lo siguiente es mi código:

 BufferedWriter fileOut; String itsFileLocation = "c:\\program files\\test\\"  System.out.println(itsFileLocation);  try {  fileOut = new BufferedWriter(new FileWriter("C:\\test.bat"));  fileOut.write("cd\\"+"\n");  fileOut.write("cd "+ itsFileLocation +"\n");  fileOut.write("test.exe"+"\n");  fileOut.write("exit"+"\n");   fileOut.close(); // Close the output stream after all output is done.  } catch (IOException e1) {  e1.printStackTrace();  } // Create the Buffered Writer object to write to a file called filename.txt  Runtime runtime = Runtime.getRuntime();  try {  Process process =runtime.exec("cmd /c start C:\\test.bat");  } catch (IOException e) {  e.printStackTrace();  } 

El código anterior funciona perfectamente. Sin embargo, el símbolo del sistema también se abre en la parte posterior de mi .exe (Aplicación). Se cierra solo después de que sale el archivo .exe.

Necesito cliquear mi símbolo del sistema cuando las estadísticas de mi aplicación.

Mi archivo .bat será como seguir después de que haya sido escrito por el progtwig.

 cd\ cd C:\Program Files\test\ test.exe exit 

No necesitas una consola. Puede ejecutar un proceso utilizando un directorio de trabajo:

exec (comando de cadena, String [] envp, dir de archivo)

Ejecuta el comando de cadena especificado en un proceso separado con el entorno y el directorio de trabajo especificados.

  • comando es la ubicación del .exe
  • envp puede ser nulo
  • dir, es el directorio de tu .exe

Con respecto a tu código, debería ser …

 Runtime.getRuntime().exec("c:\\program files\\test\\test.exe", null, new File("c:\\program files\\test\\")); 

Puede usar Runtime.exec (java.lang.String, java.lang.String [], java.io.File) donde puede establecer el directorio de trabajo.

O bien, puede usar ProcessBuilder de la siguiente manera:

 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); pb.directory(new File("myDir")); Process p = pb.start(); 

Otra forma de ejecutar un archivo es la siguiente:

 import java.awt.Desktop; import java.io.File; public static void open(String targetFilePath) throws IOException { Desktop desktop = Desktop.getDesktop(); desktop.open(new File(targetFilePath)); } 

El Código Estándar para ejecutar Bat o cualquier otra línea de comando usando java es:

 runtimeProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\""+backup_path+"\""); int processComplete = runtimeProcess.waitFor(); 

y puede continuar para múltiples archivos usando & supperator como: &&

La mejor forma de ejecutar el archivo exe

make java.awt.Desktop object e igual Desktop.getDesktop ();

Desktop desktop = Desktop.getDesktop(); desktop.open("file path");

ejecutar el archivo exe:

desktop.open("C:\\Windows\\System32\\cmd.exe");

o

desktop.open("C:/Windows/System32/cmd.exe");

ejecutar url:

desktop.browse(new URI("http://www.google.com"));