2

3.x で開始した RCP アプリケーションがあり、現在は 4.x へのソフト マイグレーションを実行しています。

-version、-help などのエンド ユーザー向けのコマンド ライン引数オプションを追加する必要があります。そのため、ユーザーmyApp -versionがコンソールに入力しても、アプリケーションは起動されず、バージョン番号が表示されるだけです。

ありがとうございました!

Application クラスでこれを試してみました。

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 メソッドに到達するまでに、スプラッシュ イメージを含むシェルが既に表示されており、クラスのいずれかが介入するために変更を加える前に、このシェルが作成されていると思います。

4

2 に答える 2

1

4.x のドキュメントは見ていませんが、 IApplicationのstart メソッドを使用して、GUI が起動する前にこれを処理できるようです。

次に、アプリケーションが実際に起動する前に、次のようなことを行います...

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;
}
于 2013-04-25T15:40:53.740 に答える