Откройте новое окно приглашения / терминала из Java - PullRequest
11 голосов
/ 21 апреля 2011

Я хочу открыть новое окно терминала, которое будет запускать определенную команду при открытии. Желательно, чтобы это было реальное собственное окно, и я не против написать другой код для linux / osx / windows.

Я предполагаю, что эмулируемый терминал будет работать, если он поддерживает все, что будет делать настоящий терминал, а не просто печатает строки вывода команды.

Ответы [ 4 ]

13 голосов
/ 21 апреля 2011

Будет ли это работать?

// windows only
Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe");
p.waitFor();
11 голосов
/ 21 апреля 2011

Открытие реального окна терминала определенно потребует различного кода для каждой ОС.Для Mac вы хотите что-то вроде:

Runtime.getRuntime().exec("/usr/bin/open -a Terminal /path/to/the/executable");
5 голосов
/ 21 июня 2016

Я использовал это в Ubuntu (X11 Desktop) 10.04 ~ 14.04 и других дистрибутивах Debian. Работает отлично; хотя вы можете рассмотреть возможность использования 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.
3 голосов
/ 21 апреля 2011

Вам нужна информация об операционной системе, которую вы используете. Для этого вы можете использовать такой код:

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

Тогда для каждой ОС вам придется использовать разные вызовы, как описано Bala R и Майком Баранчаком

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...