有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse RCP:不启动应用程序的命令行参数

我有一个RCP应用程序,是我在3年开始的。现在我做了一个软迁移到4。十,

我需要为最终用户添加命令行参数选项,例如-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方法时,带有splash图像的shell已经显示出来,我认为这个shell是在我的任何类可以进行更改之前创建的


共 (2) 个答案

  1. # 1 楼答案

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

    你唯一的出路就是

    1. config.ini中删除此项
    2. 在^{中显示自己的启动屏幕

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

  2. # 2 楼答案

    我还没看过这四个。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;
    }