Проверяем в какой ОС выполняется наш код, эта возможность реализована начиная с версии java 1.4.2
|
1 |
System.getProperty("os.name") |
Возвращаемые значения можно посмотреть на http://lopica.sourceforge.net/os.html
Выполнение сторонней программы, в нашем случае открытие браузера происходит с помощью консоли/командной строки.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package ru.leodev.startBrowser; public class StartBrowser { public static void main(String args[]) { String url = "http://www.leodev.ru"; String os = System.getProperty("os.name").toLowerCase(); // получаем имя операционной системы Runtime rt = Runtime.getRuntime(); try { if (os.contains("win")) { // не поддерживаются ссылки формата "leodev.html#someTag" rt.exec("rundll32 url.dll,FileProtocolHandler " + url); // если windows, открываем урлу через командную строку } else if (os.contains("mac")) { rt.exec("open " + url); // аналогично в MAC } else if (os.contains("nix") || os.contains("nux")) { // c nix системами все несколько проблемотичнее String[] browsers = {"epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx"}; // Формируем строку с вызовом всем браузеров через логическое ИЛИ в shell консоли // "browser0 "URI" || browser1 "URI" ||..." StringBuilder cmd = new StringBuilder(); for (int i = 0; i < browsers.length; i++) cmd.append(i == 0 ? "" : " || ").append(browsers[i]).append(" \"").append(url).append("\" "); rt.exec(new String[]{"sh", "-c", cmd.toString()}); } else { return; } } catch (Exception e) { // игнорируем все ошибки } } } |
Альтернативный способ Java SE 1.6
В Java 1.6 в пакете java.awt появился класс Desktop который позволяет выполнять аналогичные действия встроенными средствами java.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public static void openBrowser(String url) throws URISyntaxException { Desktop desktop; try { desktop = Desktop.getDesktop(); } catch (Exception ex) { System.err.println("Класс Desktop не поддерживается."); return; } if (!desktop.isSupported(Desktop.Action.BROWSE)) { System.err.println("BROWSE: операция не поддерживается.."); return; } // если все ок пытаемся открыть ссылку try { desktop.browse(new URL(url).toURI()); } catch (IOException ex) { System.err.println("Failed to browse. " + ex.getLocalizedMessage()); } } |
Класс Desktop позволяет:
- запускать установленный по умолчанию браузер с заданным URI;
- запускать установленный по умолчанию почтовый клиент опционально задавая почтовый URI;
- запускать установленный по умолчанию редактор файлов для открытия, редактирования и печати содержимого документа;