【问题标题】:Eclipse RCP: command line argument without starting applicationEclipse RCP:没有启动应用程序的命令行参数
【发布时间】:2013-04-25 15:23:25
【问题描述】:

我有一个在 3.x 中启动的 RCP 应用程序,现在我已软迁移到 4.x。

我需要为最终用户添加命令行参数选项,例如 -version、-help 等。所以当用户在控制台中输入 myApp -version 时,它不会启动应用程序,只显示版本号。

谢谢!

我在我的应用程序类中尝试过这个,

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

【问题讨论】:

    标签: java eclipse eclipse-rcp


    【解决方案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;
    }
    

    【讨论】:

    • 您好,感谢您的评论。我也试过了,但就像我说的启动画面仍然显示。
    • 是的,启动画面确实显示...不要认为有什么可以做的(除了,也许,不使用启动画面?)。
    • 哈哈,谢谢,但不幸的是,目前无法移除启动画面
    【解决方案2】:

    启动程序(典型的 eclipse.exe 或类似文件)完全声明 Java VM 之前显示启动画面。初始屏幕基于 configuration/config.ini 中的条目 osgi.splashPath=platform\:/base/plugins/... 显示。

    你唯一的出路是

    1. config.ini 中删除此条目
    2. IApplication.start(...) 中显示您自己的启动画面

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

    【讨论】:

    猜你喜欢
    • 2010-09-09
    • 2014-11-16
    • 2013-04-25
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多