我有一个我在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。
答案 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
显示。
你唯一的出路就是
config.ini
IApplication.start(...)
请注意,与今天相比,启动画面将“延迟”,SplashHandler
将不会被实例化并自动调用(尽管您可以自己调用)。