Я думаю, использование xdg-open http://example.com
, вероятно, лучший выбор.
В случае, если они не установлены, я полагаю, что они могут иметь только kde-open
или gnome-open
(оба из которых принимают один файл / URL) или какой-то другой обходной путь, такой как зацикливание на общем исполняемом файле браузераимена, пока вы не найдете тот, который может быть выполнен (с помощью которого).Если вам нужен полный список обходных путей / запасных вариантов, я предлагаю прочитать xdg-open (это сценарий оболочки, который вызывает kde-open / gnome-open / etc. Или какой-то другой запасной вариант).
Но поскольку xdg-open и xdg-mime (используемые для одного из запасных вариантов) являются сценариями оболочки, я бы порекомендовал включить их в ваше приложение, а если вызов which xdg-open
завершится неудачно, добавьте их во временную переменную PATH всвою подпрограмму среды и взывать к ним.Если xdg-open завершится неудачно, я бы порекомендовал выдать исключение с сообщением об ошибке из того, что он вывел на stderr, и перехватить исключение и распечатать / отобразить сообщение об ошибке.
Я бы проигнорировал решение java awt Desktop, поскольку эта ошибка, похоже, указывает на то, что в ближайшее время они не планируют поддерживать рабочие столы не-gnome.