2011-04-21 29 views
7

Quiero abrir una nueva ventana de terminal, que ejecutará un cierto comando al abrir. Preferiblemente tiene que ser una ventana nativa real, y no me importa escribir un código diferente para linux/osx/windows.Abrir una nueva ventana de solicitud/terminal desde Java

Supongo que un terminal emulado funcionaría, siempre que sea compatible con todo lo que un terminal real podría hacer y no solo imprime líneas de salida desde un comando.

Respuesta

9

La apertura de una ventana de terminal real definitivamente requerirá un código diferente para cada sistema operativo. Para Mac, desea algo como:

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

¿Qué hace -a? – clankill3r

12

¿Funcionará?

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

Necesita información sobre el sistema operativo que está ejecutando. Para que usted podría utilizar código como este:

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)); 
    } 

Luego, para cada sistema operativo que habría que utilizar diferentes invocaciones como se describe por Bala R y Mike Baranczak

4

He utilizado este en Ubuntu (X11 Escritorio) 10.04 ~ 14.04, y otras distribuciones de Debian. Funciona bien; aunque, puede considerar usar Java ProcessBuilder.

 
    // GNU/Linux -- example 

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

// --disable-factory Do not register with the activation nameserver, do not re-use an active terminal 
// -e     Execute the argument to this option inside the terminal. 
+0

--disable-factory no funciona en mi Peppermint Linux 7 –

Cuestiones relacionadas