2013-04-25 2 views
2

3.x에서 시작한 RCP 응용 프로그램이 있고 지금은 4.x 로의 부드러운 마이그레이션을 수행했습니다.Eclipse RCP : 응용 프로그램을 시작하지 않고 명령 줄 인수

사용자가 콘솔에 myApp -version을 입력하면 응용 프로그램이 시작되지 않고 버전 번호 만 표시되므로 최종 사용자에게 -version, -help 등과 같은 명령 줄 인수 옵션을 추가해야합니다.

감사합니다.

나는

public Object start(IApplicationContext context) throws Exception { 
     String[] args = Platform.getCommandLineArgs(); 
     int i = 0; 
     while (i < args.length) 
     { 
      if (args[i].equals("-v")) 
      { 
       System.out.println("Version ABC"); 
       return IApplication.EXIT_OK; 
      } 
      i++; 
     } 

     Display display = PlatformUI.createDisplay(); 
     try { 
      int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); 
      if (returnCode == PlatformUI.RETURN_RESTART) 
       return IApplication.EXIT_RESTART; 
      else 
       return IApplication.EXIT_OK; 
     } finally { 
      display.dispose(); 
     } 

    } 

그것은 UI를 시작하지 않습니다하지만 시작 화면을 시작, 내 응용 프로그램 클래스에서 이것을 시도했다. 스플래시 화면이 시작되기 전에 getCommandLineArgs()을 넣을 수있는 방법이 있습니까?

SplashHandler 시도 : 내 자신의 SplashHandler를 바인딩하려고했지만 같은 문제가 발생했습니다. SplashHandler의 init 메소드에 도달 할 때까지 스플래쉬 이미지가있는 쉘이 이미 표시되어 있으며이 클래스는 내 클래스가 개입하기 전에 변경 될 수 있다고 생각합니다.

답변

1

4.x 문서는 보지 않았지만 입니다. GUI를 시작하기 전에 start method in IApplication을 사용하여 처리 할 수 ​​있습니다. 응용 프로그램이 실제로 시작되기 전에

그런 다음

Map args = context.getArguments(); 

String[] parms_ = (String[]) args.get("application.args"); 
List parms = Arrays.asList(parms_); 

if (parms.contains("-version")) { 
    System.out.println("version found"); 
    return IApplication.EXIT_OK; 
} 
+0

안녕하세요. 나는 그걸 시도해 보았지만 스플래시 화면은 여전히 ​​표시되었다. – nbz

+0

예, 스플래시 화면이 표시됩니다 ... 스플래시 화면을 사용하지 않는 경우를 제외하고는 할 수있는 일이 없다고 생각하지 마십시오. –

+0

하하 감사하지만 불행히도 스플래시 화면을 제거하는 것은 지금은 옵션이 아닙니다. – nbz

1

시작 화면은 자바 VM이에 적혀있다 전에 실행 (일반 eclipse.exe라는 또는 이와 유사한 것)으로 표시됩니다 ... 같은 것을에서 할 모든. 스플래시 화면은 osgi.splashPath=platform\:/base/plugins/...configuration/config.ini에 기반하여 표시됩니다.

  1. 제거에
  2. config.ini에서이 항목은에 비해 시작 화면이 "지연"되므로주의하시기 바랍니다 IApplication.start(...)

에서 시작 화면을 소유 보여 당신은 유일한 방법은 밖으로있다 오늘 및 SplashHandler은 인스턴스화되지 않고 자동으로 호출됩니다 (직접 할 수도 있지만).

+0

자바로 시작한 스플래시 화면이이 상황에서 유용할까요? - http://docs.oracle.com/javase/tutorial/uiswing/misc/splashscreen.html – nbz

+0

스윙을 기반으로하는 것이 아니라 SWT 솔루션이 필요합니다. –

관련 문제