Apri una nuova finestra di prompt / terminale da Java

Voglio aprire una nuova finestra di terminale, che eseguirà un determinato comando all’apertura. Preferibilmente deve essere una vera finestra nativa, e non mi interessa scrivere codice diverso per linux / osx / windows.

Suppongo che un terminale emulato funzionerebbe, a patto che supporti tutto ciò che un vero terminale potrebbe fare e non stia semplicemente stampando righe di output da un comando.

L’apertura di una finestra di terminale effettiva richiederà sicuramente un codice diverso per ciascun sistema operativo. Per Mac, vuoi qualcosa come:

Runtime.getRuntime().exec("/usr/bin/open -a Terminal /path/to/the/executable"); 

Funzionerà?

 // windows only Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe"); p.waitFor(); 

L’ho usato su Ubuntu (X11 Desktop) 10.04 ~ 14.04 e altre distribuzioni Debian. Funziona bene; sebbene, si possa prendere in considerazione l’utilizzo di ProcessBuilder di Java.

      // GNU / Linux - esempio

 Runtime.getRuntime (). Exec ("/ usr / bin / x-terminal-emulator --disable-factory -e cat README.txt");

  // --disable-factory Non registrare con il server dei nomi di triggerszione, non riutilizzare un terminale attivo
 // -e Esegue l'argomento con questa opzione all'interno del terminale.

Hai bisogno di informazioni sul sistema operativo che stai utilizzando. Per quello potresti usare un codice come questo:

 public static void main(String[] args) { String nameOS = "os.name"; String versionOS = "os.version"; String architectureOS = "os.arch"; System.out.println("\n The information about OS"); System.out.println("\nName of the OS: " + System.getProperty(nameOS)); System.out.println("Version of the OS: " + System.getProperty(versionOS)); System.out.println("Architecture of THe OS: " + System.getProperty(architectureOS)); } 

Quindi per ogni sistema operativo dovresti utilizzare diverse chiamate come descritto da Bala R e Mike Baranczak