Узнайте, запущена ли Java-программа из CMD или нет - PullRequest
0 голосов
/ 04 июня 2018

Я хочу написать программу на Java, которая получает ввод через текст (консольная программа).
Когда эта программа запускается сразу же при помощи метода main , я хочу иметь возможность проверитьесли программа была запущена из командной строки (cmd) или из файла JAR.Это так, что я могу открыть JFrame для получения ввода, если нет cmd для его получения.

По сути, что-то вроде этого:

public static void main(String[] args){
    if(startedFromCmd()) {
        startProgram();
    } else{
        openInputFrame();
        startProgram();
    }
}

Есть ли какой-либо встроенный метод Javaкто может это проверить?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете получить процесс CMD, который выполняется в данный момент, используя команду WMIC.Однако это работает только на Windows.Для unix / Mac вы можете использовать что-то похожее на ps -ef | grep java.
wmic process, где "name like '% java%'" получает командную строку, processid

Команда выше приведёт вас к спискуJava-процесс, в котором вы можете отфильтровать свой файл.Пожалуйста, найдите образец кода здесь

0 голосов
/ 04 июня 2018

Вы можете использовать System.console(), который возвращает консольный объект, если он подключен к виртуальной машине Java.

Метод возвращает null, если консоль не подключена.Обратите внимание, что это не на 100% надежно.Например, метод возвращает null для внутренней консоли в Eclipse IDE (которая фактически является ошибкой # 122429 ).Однако он работает с командной строкой Windows.

Пример может выглядеть следующим образом:

public static void main(String[] args)
{
    if (System.console() != null)
    {
        System.out.println("There is a console!");
    }
    else
    {
        JFrame frame = new JFrame("There is no console!");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(100, 100);
        frame.setVisible(true);
    }
}

Выполнение этого в командной строке Windows с java -jar MyJar.jar приведет к

There is a console!

выводится на консоль.

Двойной щелчок по файлу .jar покажет JFrame.

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