ページをデフォルトのWebブラウザを開いて、設定する方法については右方向に缶誰かのポイント私を「www.example.com」のおかげ
ページをデフォルトのWebブラウザを開いて、設定する方法については右方向に缶誰かのポイント私を「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コードからブラウザを開いてください。
ウィンドウズ:
Runtime rt = Runtime.getRuntime();
String url = "http://stackoverflow.com";
rt.exec("rundll32 url.dll,FileProtocolHandler " + url);
マック
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
マック:
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);
}
}
}
Tim Cooperの回答にあるように、java.awt.Desktop
Javaバージョン6(1.6)以降、この機能を提供していますが、次の警告があります。
をサポートまたは提供していないプラットフォームの場合はjava.awt.Desktop
、BrowserLauncher2プロジェクトを調べてください。これは、Eric Albertによって最初に作成およびリリースされたBrowserLauncherクラスから派生し、多少更新されています。2000年代初頭にWebブラウザーインターフェイスでローカルに実行されるマルチプラットフォームJavaアプリケーションで、元のBrowserLauncherクラスをうまく使用しました。
BrowserLauncher2は、GNU Lesser General Public Licenseの下でライセンスされていることに注意してください。そのライセンスが受け入れられない場合は、非常に自由なライセンスを持つ元のBrowserLauncherのコピーを探します。
このコードは、Eric AlbertによるCopyright 1999-2001(ejalbert@cs.stanford.edu)であり、この段落のコメントの最後からコメントの最後まで、このコメントの部分が削除されない限り、制限なく再配布または変更できます。 。著者は、このコードを使用するアプリケーション、アプレット、またはその他のバイナリについて通知を受けることを要求しますが、それは何よりも好奇心から外れており、必須ではありません。このソフトウェアには保証が含まれていません。著者は、データや機能の損失、またはこのソフトウェアの使用による悪影響または予期しない影響について責任を負いません。
クレジット:Steven Spencer、JavaWorldマガジン(Java Tip 66)Ron B. Yeh、Eric Shapiro、Ben Engber、Paul Teitlebaum、Andrea Cantatore、Larry Barowski、Trevor Bedzek、Frank Miedrich、Ron Rabakukkにも感謝
BrowserLauncher2以外のプロジェクトでも、2001年以降のブラウザおよびデフォルトのシステムセキュリティ設定の変更に対応するために、元のBrowserLauncherが更新されている可能性があります。
その非常に単純なコードの下に書くだけ:
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でブラウザを自動的に開きます
Windowsでは「cmd / k start http://www.example.com」を呼び出します。事実、startコマンドを使用して「デフォルト」プログラムをいつでも呼び出すことができます。ex startの場合、abc.mp3はデフォルトのmp3プレーヤーを呼び出し、要求されたmp3ファイルをロードします。
あなたが気にしないことを願っていますが、私は上からすべての役立つものをまとめ、そしてテストの準備ができている完全なクラスを思いつきました...
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);
}
}
上記のBrajesh Kumarの答えを次のように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)))))
万が一のために。