Как открыть браузер по умолчанию с помощью Java
Для меня решение с Desktop.isDesktopSupported() не работает (Windows 7 и Ubuntu). Пожалуйста, попробуйте это, чтобы открыть браузер из кода Java:
Runtime rt = Runtime.getRuntime(); String url = "http://stackru.com"; rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackru.com"; rt.exec("open " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackru.com"; String[] browsers = < "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx" >; StringBuffer cmd = new StringBuffer(); for (int i = 0; i < browsers.length; i++) if(i == 0) cmd.append(String.format( "%s \"%s\"", browsers[i], url); else cmd.append(String.format(" || %s \"%s\"", browsers[i], url); // If the first didn't work, try the next browser and so on rt.exec(new String[] < "sh", "-c", cmd.toString() >);
Если вы хотите иметь мультиплатформенное приложение, вам нужно добавить проверку операционной системы (например):
String os = System.getProperty("os.name").toLowerCase();
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
Вот мой код Он откроет данный URL в браузере по умолчанию (кроссплатформенное решение).
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Browser < public static void main(String[] args) < String url = "http://www.google.com"; if(Desktop.isDesktopSupported())< Desktop desktop = Desktop.getDesktop(); try < desktop.browse(new URI(url)); >catch (IOException | URISyntaxException e) < // TODO Auto-generated catch block e.printStackTrace(); >>else < Runtime runtime = Runtime.getRuntime(); try < runtime.exec("xdg-open " + url); >catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >> > >
Как отмечено в ответе, предоставленном Тимом Купером, java.awt.Desktop предоставляет эту возможность начиная с версии Java 6 (1.6), но со следующим предупреждением:
Для платформ, которые не поддерживают или не предоставляют java.awt.Desktop , загляните в проект BrowserLauncher2. Он получен и несколько обновлен от класса BrowserLauncher, первоначально написанного и выпущенного Эриком Альбертом. Я успешно использовал исходный класс BrowserLauncher в многоплатформенном приложении Java, которое в начале 2000-х годов работало локально с интерфейсом веб-браузера.
Обратите внимание, что BrowserLauncher2 распространяется под лицензией GNU Lesser General Public License. Если эта лицензия неприемлема, найдите копию оригинального BrowserLauncher с очень либеральной лицензией:
Этот код защищен авторским правом Эрика Альберта 1999-2001 гг. ([email protected]) и может распространяться или изменяться в любой форме без ограничений до тех пор, пока часть этого комментария из этого абзаца до конца комментария не будет удалена, Автор просит, чтобы его уведомили о любом приложении, апплете или другом двоичном файле, который использует этот код, но это скорее из любопытства, чем что-либо другое, и не требуется. Это программное обеспечение не включает никаких гарантий. Автор не несет ответственности за потерю данных или функциональности, а также за любые неблагоприятные или неожиданные последствия использования данного программного обеспечения.
Кредиты: Стивен Спенсер, журнал JavaWorld (Java Tip 66). Спасибо также Рону Б. Йе, Эрику Шапиро, Бену Энгберу, Полу Тейтлебауму, Андреа Кантаторе, Ларри Баровски, Тревору Бедзеку, Фрэнку Мидричу и Рону Рабакукку
Проекты, отличные от BrowserLauncher2, возможно, также обновили исходный BrowserLauncher для учета изменений в браузере и системных настройках безопасности по умолчанию с 2001 года.
Как открыть браузер по умолчанию с помощью Java
java.awt.Desktop — это класс, который вы ищете.
import java.awt.Desktop; import java.net.URI; // . if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) < Desktop.getDesktop().browse(new URI("http://www.example.com")); >
Это кроссплатформенное решение или только Windows? другие ответы в этой теме предлагают использовать класс Runtime для Linux
@lgal, он работал для меня как на Windows 7, так и на Linux (Ubuntu 10.10). Он всегда открывает системный браузер по умолчанию (в моем случае IE на Win7 и Firefox на Ubuntu)
Это не работает для меня. Метод IsDesktopSupported всегда возвращает false на моем компьютере с Windows. В чем дело?
Если пользователь назначил пользовательскому действию «открыть с» расширение файла, например «html», то это НЕ откроет браузер, но программу, с которой пользователь связал его . Это не решение вообще!
@krzysiek.stekrzysiek.ste вместо этого используйте Desktop.getDesktop().isSupported(Desktop.Action.BROWSE) .
Есть ли ресурсы, которые нужно очистить? Когда я это делаю, я не могу удалить соответствующий файл .jar, пока открыто окно браузера.
Вот мой код. Он откроет данный url в браузере по умолчанию (кросс-платформенное решение).
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Browser < public static void main(String[] args) < String url = "http://www.google.com"; if(Desktop.isDesktopSupported())< Desktop desktop = Desktop.getDesktop(); try < desktop.browse(new URI(url)); >catch (IOException | URISyntaxException e) < // TODO Auto-generated catch block e.printStackTrace(); >>else < Runtime runtime = Runtime.getRuntime(); try < runtime.exec("xdg-open " + url); >catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >> > >
«xdg-open» не распознается как внутренняя или внешняя команда, работающая программа или командный файл ».
Помимо «Desktop.isDesktopSupported ()» также проверьте «Desktop.getDesktop (). IsSupported (Action.BROWSE)».
Для меня решение с Desktop.isDesktopSupported() не работает (окна 7 и ubuntu). Попробуйте это, чтобы открыть браузер из java-кода:
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("open " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; String[] browsers = < "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx" >; StringBuffer cmd = new StringBuffer(); for (int i = 0; i < browsers.length; i++) if(i == 0) cmd.append(String.format( "%s \"%s\"", browsers[i], url); else cmd.append(String.format(" || %s \"%s\"", browsers[i], url); // If the first didn't work, try the next browser and so on rt.exec(new String[] < "sh", "-c", cmd.toString() >);
Если вы хотите иметь многоплатформенное приложение, вам нужно добавить проверку операционной системы (например):
String os = System.getProperty("os.name").toLowerCase();
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
Перечислить все браузеры в решении Linux очень плохо. Что делать, если один использует другой браузер, чем любой из списка? (в списке нет ни хрома, ни хрома) Или есть и Богоявление, и Firefox, но предпочитает использовать последний? Использование xdg-open в этом случае намного лучше. Поэтому решение может быть таким же простым, как у macOS.
Вы также можете использовать Runtime для создания кросс-платформенного решения:
import java.awt.Desktop; import java.net.URI; public class App < public static void main(String[] args) throws Exception < String url = "http://stackoverflow.com"; if (Desktop.isDesktopSupported()) < // Windows Desktop.getDesktop().browse(new URI(url)); >else < // Ubuntu Runtime runtime = Runtime.getRuntime(); runtime.exec("/usr/bin/firefox -new-window " + url); >> >
Как отмечено в ответе Тима Купера, java.awt.Desktop предоставляет эту возможность начиная с версии Java 6 (1.6), но со следующим предостережением:
Для платформ, которые не поддерживают или не предоставляют java.awt.Desktop , загляните в проект BrowserLauncher2. Он получен и несколько обновлен от класса BrowserLauncher, первоначально написанного и выпущенного Эриком Альбертом. Я успешно использовал исходный класс BrowserLauncher в многоплатформенном приложении Java, которое в начале 2000-х годов работало локально с интерфейсом веб-браузера.
Обратите внимание, что BrowserLauncher2 распространяется под лицензией GNU Lesser General Public License. Если эта лицензия неприемлема, найдите копию оригинального BrowserLauncher с очень либеральной лицензией:
Этот код защищен авторским правом 1999-2001 Эрика Альберта ([email protected]) и может распространяться или изменяться в любой форме без ограничений до тех пор, пока часть этого комментария из этого абзаца до конца комментария не будет удалена, Автор просит, чтобы он был уведомлен о любом приложении, апплете или другом двоичном файле, который использует этот код, но это больше из любопытства, чем что-либо другое, и не требуется. Это программное обеспечение не включает никаких гарантий. Автор не несет ответственности за потерю данных или функциональности, а также за любые неблагоприятные или неожиданные последствия использования данного программного обеспечения.
Кредиты: Стивен Спенсер, журнал JavaWorld (Java Tip 66). Спасибо также Рону Б. Йе, Эрику Шапиро, Бену Энгберу, Полу Тейтлебауму, Андреа Кантаторе, Ларри Баровски, Тревору Бедзеку, Фрэнку Мидричу и Рону Рабакукку
Проекты, отличные от BrowserLauncher2, возможно, также обновили исходный BrowserLauncher для учета изменений в браузере и системных настройках безопасности по умолчанию с 2001 года.
Как открыть веб-браузер по умолчанию с помощью java
java.awt.Desktop – это класс, который вы ищете.
import java.awt.Desktop; import java.net.URI; // . if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) < Desktop.getDesktop().browse(new URI("http://www.example.com")); >
Вот мой код. Он откроет данный url в браузере по умолчанию (кросс-платформенное решение).
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Browser < public static void main(String[] args) < String url = "http://www.google.com"; if(Desktop.isDesktopSupported())< Desktop desktop = Desktop.getDesktop(); try < desktop.browse(new URI(url)); >catch (IOException | URISyntaxException e) < // TODO Auto-generated catch block e.printStackTrace(); >>else < Runtime runtime = Runtime.getRuntime(); try < runtime.exec("xdg-open " + url); >catch (IOException e) < // TODO Auto-generated catch block e.printStackTrace(); >> > >
Для меня решение с Desktop.isDesktopSupported() не работает (окна 7 и ubuntu). Попробуйте это, чтобы открыть браузер из java-кода:
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; rt.exec("open " + url);
Runtime rt = Runtime.getRuntime(); String url = "http://stackoverflow.com"; String[] browsers = < "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx" >; StringBuffer cmd = new StringBuffer(); for (int i = 0; i < browsers.length; i++) if(i == 0) cmd.append(String.format( "%s \"%s\"", browsers[i], url); else cmd.append(String.format(" || %s \"%s\"", browsers[i], url); // If the first didn't work, try the next browser and so on rt.exec(new String[] < "sh", "-c", cmd.toString() >);
Если вы хотите иметь многоплатформенное приложение, вам нужно добавить проверку операционной системы (например):
String os = System.getProperty("os.name").toLowerCase();
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
Вы также можете использовать Runtime для создания кросс-платформенного решения:
import java.awt.Desktop; import java.net.URI; public class App < public static void main(String[] args) throws Exception < String url = "http://stackoverflow.com"; if (Desktop.isDesktopSupported()) < // Windows Desktop.getDesktop().browse(new URI(url)); >else < // Ubuntu Runtime runtime = Runtime.getRuntime(); runtime.exec("/usr/bin/firefox -new-window " + url); >> >
Как отмечено в ответе Тима Купера, java.awt.Desktop предоставляет эту возможность начиная с версии Java 6 (1.6), но со следующим предостережением:
Для платформ, которые не поддерживают или не предоставляют java.awt.Desktop , загляните в проект BrowserLauncher2. Он получен и несколько обновлен от класса BrowserLauncher, первоначально написанного и выпущенного Эриком Альбертом. Я успешно использовал исходный класс BrowserLauncher в многоплатформенном приложении Java, которое в начале 2000-х годов работало локально с интерфейсом веб-браузера.
Обратите внимание, что BrowserLauncher2 распространяется под лицензией GNU Lesser General Public License. Если эта лицензия неприемлема, найдите копию оригинального BrowserLauncher с очень либеральной лицензией:
Этот код защищен авторским правом 1999-2001 Эрика Альберта (ejalbert@cs.stanford.edu) и может распространяться или изменяться в любой форме без ограничений до тех пор, пока часть этого комментария из этого абзаца до конца комментария не будет удалена, Автор просит, чтобы он был уведомлен о любом приложении, апплете или другом двоичном файле, который использует этот код, но это больше из любопытства, чем что-либо другое, и не требуется. Это программное обеспечение не включает никаких гарантий. Автор не несет ответственности за потерю данных или функциональности, а также за любые неблагоприятные или неожиданные последствия использования данного программного обеспечения.
Кредиты: Стивен Спенсер, журнал JavaWorld (Java Tip 66). Спасибо также Рону Б. Йе, Эрику Шапиро, Бену Энгберу, Полу Тейтлебауму, Андреа Кантаторе, Ларри Баровски, Тревору Бедзеку, Фрэнку Мидричу и Рону Рабакукку
Проекты, отличные от BrowserLauncher2, возможно, также обновили исходный BrowserLauncher для учета изменений в браузере и системных настройках безопасности по умолчанию с 2001 года.
для windows invoke “cmd/k start http://www.example.com”
Infact вы всегда можете вызывать программы по умолчанию с помощью команды start.
Для ex start abc.mp3 вызовет mp3-плеер по умолчанию и загрузит запрошенный mp3 файл.
Его очень просто написать ниже код:
String s = "http://www.google.com"; Desktop desktop = Desktop.getDesktop(); desktop.browse(URI.create(s));
или если вы не хотите загружать URL-адрес, просто напишите имя своего браузера в строковые значения, например
String s = "chrome"; Desktop desktop = Desktop.getDesktop(); desktop.browse(URI.create(s));
он автоматически откроет браузер с пустым URL-адресом после выполнения программы