Как открыть веб-браузер по умолчанию с помощью java

Может ли кто-нибудь указать мне в правильном направлении, как открыть веб-браузер по умолчанию, и установить страницу "www.example.com" благодаря

Ответ 1

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"));
}

Ответ 2

Вот мой код. Он откроет данный 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();
            }
        }
    }
}

Ответ 3

Для меня решение с Desktop.isDesktopSupported() не работает (окна 7 и ubuntu). Попробуйте это, чтобы открыть браузер из java-кода:

Windows:

Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);

Mac

Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("open " + url);

Linux:

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("win") >= 0

Mac:

os.indexOf("mac") >= 0

Linux:

os.indexOf("nix") >=0 || os.indexOf("nux") >=0

Ответ 4

Вы также можете использовать 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);
        }
    }
}

Ответ 5

Как отмечено в ответе Тима Купера, java.awt.Desktop предоставляет эту возможность начиная с версии Java 6 (1.6), но со следующим предостережением:

Используйте метод isDesktopSupported(), чтобы определить, доступен ли Desktop API. В операционной системе Solaris и платформе Linux этот API зависит от библиотек Gnome. Если эти библиотеки недоступны, этот метод вернет false.

Для платформ, которые не поддерживают или не предоставляют 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 года.

Ответ 6

для windows invoke "cmd/k start http://www.example.com" Infact вы всегда можете вызывать программы по умолчанию с помощью команды start. Для ex start abc.mp3 вызовет mp3-плеер по умолчанию и загрузит запрошенный mp3 файл.

Ответ 7

Его очень просто написать ниже код:

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-адресом после выполнения программы