Je sais qu'il s'agit d'une vieille question mais parfois la Desktop.getDesktop()
produit un crash inattendu comme dans Ubuntu 18.04. Par conséquent, je dois réécrire mon code comme ceci :
public static void openURL(String domain)
{
String url = "https://" + domain;
Runtime rt = Runtime.getRuntime();
try {
if (MUtils.isWindows()) {
rt.exec("rundll32 url.dll,FileProtocolHandler " + url).waitFor();
Debug.log("Browser: " + url);
} else if (MUtils.isMac()) {
String[] cmd = {"open", url};
rt.exec(cmd).waitFor();
Debug.log("Browser: " + url);
} else if (MUtils.isUnix()) {
String[] cmd = {"xdg-open", url};
rt.exec(cmd).waitFor();
Debug.log("Browser: " + url);
} else {
try {
throw new IllegalStateException();
} catch (IllegalStateException e1) {
MUtils.alertMessage(Lang.get("desktop.not.supported"), MainPn.getMainPn());
e1.printStackTrace();
}
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
public static boolean isWindows()
{
return OS.contains("win");
}
public static boolean isMac()
{
return OS.contains("mac");
}
public static boolean isUnix()
{
return OS.contains("nix") || OS.contains("nux") || OS.indexOf("aix") > 0;
}
Ensuite, nous pouvons appeler cette aide à partir de l'instance :
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MUtils.openURL("www.google.com"); // just what is the 'open' method?
}
});
3 votes
Vous avez peut-être essayé de regarder le JavaDocs pour la classe qui est utilisé dans la réponse acceptée de votre dernière question ! Ces documents sont très pratiques, vous pouvez les joindre à votre IDE ou ajouter la version en ligne à vos favoris.
0 votes
Question dupliquée : stackoverflow.com/q/5226212/873282