Quelqu'un peut-il m'indiquer dans la bonne direction comment ouvrir le navigateur Web par défaut et définir la page sur "www.example.com" merci
Quelqu'un peut-il m'indiquer dans la bonne direction comment ouvrir le navigateur Web par défaut et définir la page sur "www.example.com" merci
Réponses:
java.awt.Desktop
est la classe que vous recherchez.
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)
vérification à la place.
Voici mon code. Il ouvrira l'URL donnée dans le navigateur par défaut (solution multiplateforme).
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();
}
}
}
}
Pour moi, la solution avec Desktop.isDesktopSupported()
ne fonctionne pas ( Windows 7 et Ubuntu ). Veuillez essayer ceci pour ouvrir le navigateur à partir du code java:
Les fenêtres:
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() });
Si vous souhaitez avoir une application multiplateforme, vous devez ajouter une vérification du système d'exploitation (par exemple):
String os = System.getProperty("os.name").toLowerCase();
Les fenêtres:
os.indexOf("win") >= 0
Mac:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-open
est bien meilleure dans ce cas. La solution pourrait donc être aussi simple que celle de macOS.
Vous pouvez également utiliser le Runtime pour créer une solution multiplateforme:
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);
}
}
}
Comme indiqué dans la réponse fournie par Tim Cooper, java.awt.Desktop
a fourni cette capacité depuis la version 6 de Java (1.6), mais avec la mise en garde suivante:
Pour les plates-formes qui ne prennent pas en charge ou ne fournissent pas java.awt.Desktop
, regardez dans le projet BrowserLauncher2 . Il est dérivé et quelque peu mis à jour de la classe BrowserLauncher initialement écrite et publiée par Eric Albert. J'ai utilisé avec succès la classe originale BrowserLauncher dans une application Java multi-plateforme qui fonctionnait localement avec une interface de navigateur Web au début des années 2000.
Notez que BrowserLauncher2 est sous licence GNU Lesser General Public License . Si cette licence est inacceptable, recherchez une copie du BrowserLauncher original qui a une licence très libérale:
Ce code est Copyright 1999-2001 par Eric Albert (ejalbert@cs.stanford.edu) et peut être redistribué ou modifié sous n'importe quelle forme sans restriction tant que la partie de ce commentaire de ce paragraphe jusqu'à la fin du commentaire n'est pas supprimée . L'auteur demande qu'il soit averti de toute application, applet ou autre binaire utilisant ce code, mais c'est plus par curiosité qu'autre chose et n'est pas obligatoire. Ce logiciel n'inclut aucune garantie. L'auteur n'est pas responsable de toute perte de données ou de fonctionnalité ou de tout effet indésirable ou inattendu de l'utilisation de ce logiciel.
Crédits: Steven Spencer, magazine JavaWorld (Java Tip 66) Merci également à Ron B.Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich et Ron Rabakukk
Les projets autres que BrowserLauncher2 peuvent également avoir mis à jour le BrowserLauncher d'origine pour tenir compte des modifications apportées aux paramètres de sécurité du navigateur et du système par défaut depuis 2001.
C'est très simple, il suffit d'écrire le code ci-dessous:
String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
ou si vous ne voulez pas charger l'URL, écrivez simplement le nom de votre navigateur dans des valeurs de chaîne comme,
String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
il ouvrira automatiquement le navigateur avec une URL vide après l'exécution d'un programme
J'espère que cela ne vous dérange pas, mais j'ai bricolé toutes les choses utiles, d'en haut, et j'ai proposé une classe complète prête à être testée ...
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);
}
}
sous windows, invoquez "cmd / k start http://www.example.com " En fait, vous pouvez toujours invoquer des programmes "par défaut" en utilisant la commande start. Par exemple, abc.mp3 invoquera le lecteur mp3 par défaut et chargera le fichier mp3 demandé.
Je reformule la réponse de Brajesh Kumar ci-dessus en Clojure comme suit:
(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)))))
au cas où cela serait utile à quiconque.