Обновление: как отмечено дубликат, я просто хочу упомянуть, это похоже на дубликат, но ответ на другой упомянутый вопрос не совсем корректен. Вместо этого обратитесь к принятому ответу ниже. isHeadless вернется в некоторых случаях неожиданно.Проверьте, есть ли у компьютера/компьютера дисплей или графический выход
Его немного странная ситуация, но в последнее время я создаю очень простое Java-приложение, которое можно запускать в режиме консоли/терминала или в режиме интерфейса JavaFX.
Однако, при использовании на удаленном компьютере, на котором нет дисплея. Я получил ошибку, что это приложение JavaFX UI не может быть запущено в системах без дисплея, что довольно очевидно.
Чтобы решить эту проблему, я искал надежный способ определения наличия в системе какого-либо дисплея и может инициировать приложение JavaFX, которое должно быть независимым от платформы решением, поскольку это может быть Windows или Ubuntu/Linux или Mac.
Структура приложения:
A Главного консольное приложение, которые в зависимости от входных аргументов выполняют Внутренне консольного приложение приложения или UI.
Для того, чтобы, если какие-либо аргументы приведены, выполняются в консольном режиме или если в режиме пользовательского интерфейса не используются никакие аргументы. Здесь я хочу определить, есть ли в моем основном консольном приложении дисплей, который тогда даже не попытается запустить приложение пользовательского интерфейса, если дисплей отсутствует.
Любая идея, как мы можем достичь этого или предложения в правильном направлении, было бы замечательно.
что насчет try..catch? Можете ли вы определить точный код ошибки/сообщение/тип? – jean
@jean: да, абсолютно верно, но я искал больше похоже на внутренний Java-способ обнаружения этого, а не даже на стадии исключения. Вот почему я сказал прочный путь. Потому что, поскольку Java выбрасывает это исключение, это означает, что он должен был его читать или обнаруживать. Это то, что я хочу знать :) – Indigo