ใครช่วยชี้ทางที่ถูกต้องเกี่ยวกับวิธีเปิดเว็บเบราว์เซอร์เริ่มต้นและตั้งค่าหน้าเว็บเป็น"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);
ลินุกซ์:
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
ลินุกซ์:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-open
จะดีกว่ามากในกรณีนี้ วิธีแก้ปัญหาอาจทำได้ง่ายเหมือน macOS
คุณยังสามารถใช้Runtimeเพื่อสร้างโซลูชันข้ามแพลตฟอร์ม:
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 มันได้มาและค่อนข้างปรับปรุงจากคลาสBrowserLauncher ที่เขียนและเผยแพร่โดย Eric Albert ฉันใช้คลาส BrowserLauncher ดั้งเดิมได้สำเร็จในแอปพลิเคชัน Java แบบหลายแพลตฟอร์มซึ่งทำงานในเครื่องด้วยอินเทอร์เฟซเว็บเบราว์เซอร์ในช่วงต้นปี 2000
โปรดทราบว่า BrowserLauncher2 ได้รับใบอนุญาตภายใต้สัญญาอนุญาตแบบสาธารณะทั่วไป หากใบอนุญาตนั้นไม่เป็นที่ยอมรับให้มองหาสำเนาของ BrowserLauncher ดั้งเดิมซึ่งมีใบอนุญาตแบบเสรีมาก:
รหัสนี้เป็นลิขสิทธิ์ 1999-2001 โดย Eric Albert (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 อาจมีการอัปเดต BrowserLauncher ดั้งเดิมเพื่อรองรับการเปลี่ยนแปลงในเบราว์เซอร์และการตั้งค่าความปลอดภัยเริ่มต้นของระบบตั้งแต่ปี 2544
มันง่ายมากเพียงแค่เขียนโค้ดด้านล่าง:
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 " Infact คุณสามารถเรียกโปรแกรม "default" ได้ตลอดเวลาโดยใช้คำสั่ง start สำหรับ ex start abc.mp3 จะเรียกใช้เครื่องเล่น mp3 เริ่มต้นและโหลดไฟล์ mp3 ที่ร้องขอ
ฉันเขียนคำตอบของ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)))))
เผื่อว่าจะเป็นประโยชน์กับทุกคน