Чтение аргументов программы в приложении RCP? - PullRequest
1 голос
/ 18 октября 2011

Я создал приложение eclipse и конфигурацию продукта.

В конфигурации продукта на вкладке «Запуск» можно указать «Аргументы программы» и «Аргументы VM».

Возможно ли получить доступ к этим аргументам из класса Application?В настоящее время этот класс выглядит следующим образом:

public class Application implements IApplication {

  @Override
  public Object start(IApplicationContext context) throws Exception {
    Map<?, ?> arguments = context.getArguments(); // this is empty!

    // This actually does the trick but is a bit ugly - must be parsed
    String[] strings = (String[]) context.getArguments()
    .get("application.args");

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

  }


  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.equinox.app.IApplication#stop()
   */
  @Override
  public void stop() {
    final IWorkbench workbench = PlatformUI.getWorkbench();
    if (workbench == null) {
      return;
    }
    final Display display = workbench.getDisplay();
    display.syncExec(new Runnable() {
      @Override
      public void run() {
        if (!display.isDisposed()) {
          workbench.close();
        }
      }
    });
  }

Есть ли лучший способ извлечь аргументы приложения, чем:

// This actually does the trick but is a bit ugly
String[] strings = (String[]) context.getArguments()
.get("application.args");

1 Ответ

5 голосов
/ 19 октября 2011

Just

Platform.getCommandLineArgs();

См. http://www.vogella.de/blog/2008/06/21/passing-parameters-to-eclipse-rcp-via-the-command-line/ для примера.

...