문제

질문

가 작성된 응용 프로그램에서 Java.그것은에서 실행되도록 설계되었 Linux 상자니다.내가 노력하고 새로운 스폰 firefox 창입니다.그러나, firefox 지 않습니다.그것은 항상있는 쉘 코드의 1.나는 실행할 수 있는 이 같은 코드 gnome-terminal 고 괜찮습니다.

배경

그래서,여기에는 초기화 과정:

  1. 시작 X"Xorg:1-br-종료 dpms-한 vt7"
  2. 시작 창 Manager"을 준수하는 최--display=:1--바꾸기"
  3. 구성원"xrdb-merge/etc/X11/Xresources"
  4. 가 데몬에서 분리 제어 터미널

프로그램이 실행,거기에는 버튼을 클릭할 수 있어야 하는 부 firefox 창입니다.여기에는 나의 코드에 할 수있다.기 X 에서 실행되고 표시:1.

코드


public boolean openBrowser()
{
  try {
    Process oProc = Runtime.getRuntime().exec( "/usr/bin/firefox --display=:1" );
    int bExit = oProc.waitFor();  // This is always 1 for some reason

    return true;

  } catch ( Exception e ) {
    oLogger.log( Level.WARNING, "Open Browser", e );
    return false;
  }
}
도움이 되었습니까?

해결책

을 읽고 다양한 응답과 다양한 주석(에서 질문자),여기에 무엇을 할 수

1)이 java 접근법 http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory("myDir");
Process p = pb.start();

이에 대해 더 자세히 클래스:

http://java.sun.com/developer/JDCTechTips/2005/tt0727.html#2
http://www.javabeat.net/tips/8-using-the-new-process-builder-class.html

2)이렇게 시도(파이어 폭스를 시작)에서는 C/C++/ruby/python 시는 경우는 성공하고 있습니다.

는 경우 3)다른 방법이 모두 실패한 것 쉘을 실행 프로그램과는 쉘 프로그램을 시작할 것이라 파이어 폭스!!

다른 팁

는 경우에 당신은 그것을 좁힐 수 있습 Java6 를 사용할 수 있습 데스크탑 API:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

다음과 같아야 합니다:

    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        if (desktop.isSupported(Desktop.Action.BROWSE)) {
            try {
                desktop.browse(new URI("http://localhost"));
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
            catch(URISyntaxException use) {
                use.printStackTrace();
            }
        }
    }

BrowserLauncher.

를 호출하여 그것은 매우 쉽습니다,그냥 가

new BrowserLauncher().openURLinBrowser("http://www.google.com");

할 수 있는 더 나은 행운이 당신을 읽고 표준출력/오류 스트림,그래서 당신이 잡을 수 있다는 어떤 오류 메시지가 firefox 인쇄할 수 있습니다.

try {
     String url = "http://www.google.com";
     java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
} catch (java.io.IOException e) {
     System.out.println(e.getMessage());
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top