Kann mir jemand die richtige Richtung zeigen, wie man den Standard-Webbrowser öffnet und die Seite auf "www.example.com" setzt, danke
Kann mir jemand die richtige Richtung zeigen, wie man den Standard-Webbrowser öffnet und die Seite auf "www.example.com" setzt, danke
Antworten:
java.awt.Desktop
ist die Klasse, die Sie suchen.
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)
stattdessen den Scheck.
Hier ist mein Code. Die angegebene URL wird im Standardbrowser (plattformübergreifende Lösung) geöffnet.
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();
}
}
}
}
Für mich Desktop.isDesktopSupported()
funktioniert die Lösung mit nicht ( Windows 7 und Ubuntu ). Bitte versuchen Sie dies, um den Browser über Java-Code zu öffnen:
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() });
Wenn Sie eine Multiplattform-Anwendung wünschen, müssen Sie die Betriebssystemprüfung hinzufügen (zum Beispiel):
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
ist in diesem Fall viel besser. Die Lösung könnte daher so einfach sein wie die von macOS.
Sie können die Laufzeit auch verwenden , um eine plattformübergreifende Lösung zu erstellen:
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);
}
}
}
Wie in der Antwort von Tim Cooper erwähnt, java.awt.Desktop
bietet diese Funktion seit Java Version 6 (1.6), jedoch mit der folgenden Einschränkung:
Informationen zu Plattformen, die nicht unterstützt oder bereitgestellt werden, finden Siejava.awt.Desktop
im BrowserLauncher2- Projekt. Es ist vom BrowserLauncher abgeleitet und etwas aktualisiert Klasse, die ursprünglich von Eric Albert geschrieben und veröffentlicht wurde. Ich habe die ursprüngliche BrowserLauncher-Klasse erfolgreich in einer plattformübergreifenden Java-Anwendung verwendet, die Anfang der 2000er Jahre lokal mit einer Webbrowser-Oberfläche ausgeführt wurde.
Beachten Sie, dass BrowserLauncher2 unter der GNU Lesser General Public License lizenziert ist . Wenn diese Lizenz nicht akzeptabel ist, suchen Sie nach einer Kopie des ursprünglichen BrowserLauncher mit einer sehr liberalen Lizenz:
Dieser Code unterliegt dem Copyright 1999-2001 von Eric Albert (ejalbert@cs.stanford.edu) und kann ohne Einschränkung in irgendeiner Form weitergegeben oder geändert werden, solange der Teil dieses Kommentars von diesem Absatz bis zum Ende des Kommentars nicht entfernt wird . Der Autor fordert, dass er über jede Anwendung, jedes Applet oder jede andere Binärdatei informiert wird, die diesen Code verwendet. Dies ist jedoch mehr aus Neugier als alles andere und nicht erforderlich. Diese Software beinhaltet keine Garantie. Der Autor ist nicht verantwortlich für Daten- oder Funktionsverlust oder nachteilige oder unerwartete Auswirkungen der Verwendung dieser Software.
Credits: Steven Spencer, JavaWorld-Magazin (Java-Tipp 66) Dank auch an Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich und Ron Rabakukk
Andere Projekte als BrowserLauncher2 haben möglicherweise auch den ursprünglichen BrowserLauncher aktualisiert, um Änderungen in den Browser- und Standardsystem-Sicherheitseinstellungen seit 2001 zu berücksichtigen.
Es ist sehr einfach, schreiben Sie einfach den folgenden Code:
String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
oder wenn Sie keine URL laden möchten, schreiben Sie einfach Ihren Browsernamen in Zeichenfolgenwerte wie:
String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
Nach dem Ausführen eines Programms wird der Browser automatisch mit leerer URL geöffnet
Unter Windows rufen Sie "cmd / k start http://www.example.com " auf. Tatsächlich können Sie mit dem Befehl "start" jederzeit "Standard" -Programme aufrufen. Zum Beispiel startet abc.mp3 den Standard-MP3-Player und lädt die angeforderte MP3-Datei.
Ich hoffe, es macht Ihnen nichts aus, aber ich habe all die hilfreichen Dinge von oben zusammengeschustert und mir eine komplette Klasse ausgedacht, die zum Testen bereit ist ...
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);
}
}
Ich habe die Antwort von Brajesh Kumar oben in Clojure wie folgt umformuliert :
(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)))))
für den Fall, dass es für irgendjemanden nützlich ist.