에 페이지를 기본 웹 브라우저를 열고 설정하는 방법에 대한 올바른 방향으로 깡통 누군가 포인트 나를 “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"));
}
답변
다음은 내 코드입니다. 기본 브라우저 (크로스 플랫폼 솔루션)에서 주어진 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 ). 자바 코드에서 브라우저를 열려면 이것을 시도하십시오 :
Windows :
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();
Windows :
os.indexOf("win") >= 0
맥:
os.indexOf("mac") >= 0
Linux :
os.indexOf("nix") >=0 || os.indexOf("nux") >=0
답변
런타임 을 사용하여 크로스 플랫폼 솔루션을 만들 수도 있습니다 .
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가 처음 작성하고 출시 한 클래스 . 2000 년대 초에 웹 브라우저 인터페이스로 로컬에서 실행 된 다중 플랫폼 Java 응용 프로그램에서 원래 BrowserLauncher 클래스를 성공적으로 사용했습니다.
BrowserLauncher2는 GNU Lesser General Public License에 따라 사용이 허가되었습니다 . 해당 라이센스가 허용되지 않는 경우 매우 자유로운 라이센스가있는 원래 BrowserLauncher의 사본을 찾으십시오.
이 코드는 Eric Albert (ejalbert@cs.stanford.edu)의 Copyright 1999-2001이며이 단락에서 주석 끝까지이 주석의 일부가 제거되지 않는 한 제한없이 어떤 형태로든 재배포하거나 수정할 수 있습니다. . 작성자는이 코드를 사용하는 응용 프로그램, 애플릿 또는 기타 바이너리에 대한 알림을받을 것을 요청하지만, 이는 무엇보다 호기심에서 벗어나 필수 사항이 아닙니다. 이 소프트웨어는 보증을 포함하지 않습니다. 작성자는 데이터 또는 기능의 손실 또는이 소프트웨어 사용으로 인한 부정적 또는 예상치 못한 영향에 대해 책임을지지 않습니다.
크레딧 : 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 “을 호출합니다. 실제로 시작 명령을 사용하여 항상 “기본”프로그램을 호출 할 수 있습니다. 예를 들어 abc.mp3는 기본 mp3 플레이어를 호출하고 요청 된 mp3 파일을로드합니다.