Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Desktop API не поддерживается в Linux

#linux #java #desktop


Задача в том, чтобы открывать файл или папку из java-приложения. Воспользовался советом
на форуме. Но оказывается это не работает в Linux, т.к. Desktop.isDesktopSupported()
== false. Как сделать, чтобы программа заработала и на Linux тоже?
    


Ответы

Ответ 1



Как-нибудь так: try { if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { Desktop.getDesktop().browse(new URI(url)); } else { string os = System.getProperty("os.name"); if (!(os.startsWith("Mac OS")) && !(os.startsWith("Windows"))) { Runtime r = Runtime.getRuntime(); for (String b : list /* google-chrome, firefox, opera */) { Process p = r.exec(new String[]{"which", b}); InputStream is = p.getInputStream(); if (is.read() != -1) { r.exec(new String[]{b, url}); return; } } } } } catch (Throwable t) { }

Ответ 2



Согласно информации с сайта oracle, в системе Linux данный функционал доступен только при наличии библиотек gnome. Если эти библиотеки не установлены, метод возвращает false. Mожно попробовать просто запускать необходимую программу. Что то вроде: Runtime.getRuntime().exec("/usr/bin/firefox www.hashcode.ru");

Комментариев нет:

Отправить комментарий