Может ли кто-нибудь указать мне в правильном направлении, как открыть веб-браузер по умолчанию и установить страницу на «www.example.com», спасибо
Может ли кто-нибудь указать мне в правильном направлении, как открыть веб-браузер по умолчанию и установить страницу на «www.example.com», спасибо
Ответы:
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"));
}
Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)
вместо этого чек.
Вот мой код. Он откроет указанный 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()
не работает ( Windows 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();
Windows:
os.indexOf("win") >= 0
Mac:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-open
В этом случае использование намного лучше. Таким образом, решение может быть таким же простым, как и решение для macOS.
Вы также можете использовать среду выполнения для создания кроссплатформенного решения:
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 с очень либеральной лицензией:
Авторские права на этот код принадлежат Эрику Альберту (ejalbert@cs.stanford.edu), 1999-2001 гг., И его можно распространять или изменять в любой форме без ограничений при условии, что часть этого комментария от этого абзаца до конца комментария не будет удалена. . Автор просит уведомлять его о любых приложениях, апплетах или других двоичных файлах, которые используют этот код, но это больше из любопытства, чем что-либо еще и не требуется. На это программное обеспечение не распространяется гарантия. Автор не несет ответственности за потерю данных или функциональности, а также за любые неблагоприятные или неожиданные последствия использования этого программного обеспечения.
Источники: Стивен Спенсер, журнал JavaWorld (Java Tip 66). Также спасибо Рону Б. Йе, Эрику Шапиро, Бену Энгберу, Полу Тейтлебауму, Андреа Кантаторе, Ларри Баровски, Тревору Бедзеку, Фрэнку Мидриху и Рону Рабакукку.
Проекты, отличные от BrowserLauncher2, также могли обновлять исходный BrowserLauncher для учета изменений в настройках безопасности браузера и системы по умолчанию с 2001 года.
Это очень просто, просто напишите ниже код:
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-адресом после выполнения программы
Надеюсь, вы не против, но я собрал все полезные вещи сверху и создал полный класс, готовый для тестирования ...
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class MultiBrowPop {
public static void main(String[] args) {
OUT("\nWelcome to Multi Brow Pop.\nThis aims to popup a browsers in multiple operating systems.\nGood luck!\n");
String url = "http://www.birdfolk.co.uk/cricmob";
OUT("We're going to this page: "+ url);
String myOS = System.getProperty("os.name").toLowerCase();
OUT("(Your operating system is: "+ myOS +")\n");
try {
if(Desktop.isDesktopSupported()) { // Probably Windows
OUT(" -- Going with Desktop.browse ...");
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI(url));
} else { // Definitely Non-windows
Runtime runtime = Runtime.getRuntime();
if(myOS.contains("mac")) { // Apples
OUT(" -- Going on Apple with 'open'...");
runtime.exec("open " + url);
}
else if(myOS.contains("nix") || myOS.contains("nux")) { // Linux flavours
OUT(" -- Going on Linux with 'xdg-open'...");
runtime.exec("xdg-open " + url);
}
else
OUT("I was unable/unwilling to launch a browser in your OS :( #SadFace");
}
OUT("\nThings have finished.\nI hope you're OK.");
}
catch(IOException | URISyntaxException eek) {
OUT("**Stuff wrongly: "+ eek.getMessage());
}
}
private static void OUT(String str) {
System.out.println(str);
}
}
в Windows вызывайте "cmd / k start http://www.example.com ". Фактически, вы всегда можете вызвать программы "по умолчанию", используя команду start. Например, abc.mp3 вызовет mp3-плеер по умолчанию и загрузит запрошенный mp3-файл.
Я переделал приведенный выше ответ Браджеша Кумара в Clojure следующим образом:
(defn open-browser
"Open a new browser (window or tab) viewing the document at this `uri`."
[uri]
(if (java.awt.Desktop/isDesktopSupported)
(let [desktop (java.awt.Desktop/getDesktop)]
(.browse desktop (java.net.URI. uri)))
(let [rt (java.lang.Runtime/getRuntime)]
(.exec rt (str "xdg-open " uri)))))
на случай, если это кому-то пригодится.