[java] Java를 사용하여 기본 웹 브라우저를 여는 방법

에 페이지를 기본 웹 브라우저를 열고 설정하는 방법에 대한 올바른 방향으로 깡통 누군가 포인트 나를 “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 7ubuntu ). 자바 코드에서 브라우저를 열려면 이것을 시도하십시오 :

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.DesktopJava 버전 6 (1.6)부터이 기능을 제공했지만 다음과 같은주의 사항이 있습니다.

isDesktopSupported () 메서드를 사용하여 Desktop API를 사용할 수 있는지 확인합니다. Solaris 운영 체제 및 Linux 플랫폼에서이 API는 Gnome 라이브러리에 종속됩니다. 이러한 라이브러리를 사용할 수없는 경우이 메서드는 false를 반환합니다.

를 지원하거나 제공하지 않는 플랫폼의 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 파일을로드합니다.