Birisi beni varsayılan web tarayıcısını nasıl açacağımı ve sayfayı "www.example.com" olarak nasıl ayarlayacağımı doğru yönlendirebilir mi teşekkürler
Birisi beni varsayılan web tarayıcısını nasıl açacağımı ve sayfayı "www.example.com" olarak nasıl ayarlayacağımı doğru yönlendirebilir mi teşekkürler
Yanıtlar:
java.awt.Desktop aradığınız sınıf.
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)bunun yerine onay kullanın.
İşte kodum. Verilen url'yi varsayılan tarayıcıda açacaktır (çapraz platform çözümü).
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();
}
}
}
}
Benim için çözüm Desktop.isDesktopSupported()çalışmıyor ( Windows 7 ve ubuntu ). Lütfen tarayıcıyı java kodundan açmayı deneyin:
Pencereler:
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() });
Çoklu platform uygulamasına sahip olmak istiyorsanız, işletim sistemi denetimi eklemeniz gerekir (örneğin):
String os = System.getProperty("os.name").toLowerCase();
Pencereler:
os.indexOf("win") >= 0
Mac:
os.indexOf("mac") >= 0
Linux:
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
xdg-openBu durumda kullanmak çok daha iyidir. Bu nedenle çözüm, macOS olanı kadar basit olabilir.
Platformlar arası bir çözüm oluşturmak için Runtime'ı da kullanabilirsiniz :
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'ın verdiği cevapta belirtildiği gibi, java.awt.Desktop bu özelliği Java sürüm 6 (1.6) 'dan beri sağlamaktadır, ancak aşağıdaki uyarı ile:
Desteklemeyen veya sağlamayan platformlar java.awt.Desktopiçin BrowserLauncher2 projesine bakın. Orijinal olarak Eric Albert tarafından yazılan ve yayımlanan BrowserLauncher sınıfından türetilmiş ve bir şekilde güncellenmiştir . Orijinal BrowserLauncher sınıfını, 2000'lerin başında bir web tarayıcısı arayüzüyle yerel olarak çalışan çok platformlu bir Java uygulamasında başarıyla kullandım.
BrowserLauncher2'nin GNU Kısıtlı Genel Kamu Lisansı altında lisanslandığını unutmayın. . Bu lisans kabul edilemezse, çok liberal bir lisansa sahip orijinal BrowserLauncher'ın bir kopyasını arayın:
Bu kodun Telif Hakkı 1999-2001 Eric Albert'e aittir (ejalbert@cs.stanford.edu) ve bu yorumun bu paragraftan yorumun sonuna kadar olan kısmı kaldırılmadığı sürece herhangi bir kısıtlama olmaksızın yeniden dağıtılabilir veya değiştirilebilir. . Yazar, bu kodu kullanan herhangi bir uygulama, uygulama veya diğer ikili programlardan haberdar edilmesini ister, ancak bu her şeyden çok meraktan kaynaklanır ve gerekli değildir. Bu yazılım hiçbir garanti içermez. Yazar, herhangi bir veri veya işlevsellik kaybından veya bu yazılımı kullanmanın herhangi bir olumsuz veya beklenmedik etkisinden sorumlu tutulamaz.
Katkıda Bulunanlar: Steven Spencer, JavaWorld dergisi (Java Tip 66) Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, Larry Barowski, Trevor Bedzek, Frank Miedrich ve Ron Rabakukk'a da teşekkürler
BrowserLauncher2 dışındaki projeler, 2001'den beri tarayıcı ve varsayılan sistem güvenlik ayarlarındaki değişiklikleri hesaba katmak için orijinal BrowserLauncher'ı da güncellemiş olabilir.
Çok basit, sadece aşağıdaki kodu yazın:
String s = "http://www.google.com";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
veya URL'yi yüklemek istemiyorsanız, tarayıcınızın adını aşağıdaki gibi dize değerlerine yazın:
String s = "chrome";
Desktop desktop = Desktop.getDesktop();
desktop.browse(URI.create(s));
bir programı çalıştırdıktan sonra tarayıcıyı boş URL ile otomatik olarak açacaktır
Umarım sakıncası yoktur ama tüm yararlı şeyleri yukarıdan bir araya getirdim ve teste hazır eksiksiz bir sınıf buldum ...
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'ta "cmd / k start http://www.example.com " u çağırın Infact, start komutunu kullanarak her zaman "varsayılan" programları çağırabilirsiniz. Eski başlangıç için abc.mp3 varsayılan mp3 çaları çağıracak ve istenen mp3 dosyasını yükleyecektir.
Brajesh Kumar'ın yukarıdaki cevabını Clojure'e aşağıdaki gibi yeniden düzenledim :
(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)))))
kimse için yararlı olması durumunda.