Eclipse RCP:无需启动应用程序的命令行参数

时间:2013-04-25 15:23:26

标签: java eclipse eclipse-rcp

我有一个我在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方法时,已经显示了带有splash图像的shell,我认为在我的任何类可以进行干预更改之前创建了这个shell。

2 个答案:

答案 0 :(得分:1)

我没有查看4.x文档,但 APPEARS 可以在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;
}

答案 1 :(得分:1)

启动屏幕(典型的eclipse.exe或类似的)在显示Java VM之前显示启动画面。启动屏幕根据osgi.splashPath=platform\:/base/plugins/...中的条目configuration/config.ini显示。

你唯一的出路就是

  1. config.ini
  2. 中删除此条目
  3. IApplication.start(...)
  4. 中显示您自己的初始屏幕

    请注意,与今天相比,启动画面将“延迟”,SplashHandler将不会被实例化并自动调用(尽管您可以自己调用)。