在我们的 rcp 应用程序中,我们使用 eclipse 框架(Splash screen 上的登录功能)实现了登录功能。
现在我们如何通过提供 VM 参数绕过此登录(包括启动屏幕)?
如果 VM 参数提供了正确的用户名和密码,我们不想显示登录页面(这包括启动屏幕,因为登录功能在启动屏幕本身上)
有任何想法吗?
在我们的 rcp 应用程序中,我们使用 eclipse 框架(Splash screen 上的登录功能)实现了登录功能。
现在我们如何通过提供 VM 参数绕过此登录(包括启动屏幕)?
如果 VM 参数提供了正确的用户名和密码,我们不想显示登录页面(这包括启动屏幕,因为登录功能在启动屏幕本身上)
有任何想法吗?
不确定是否可以跳过启动屏幕(也看不到这样做的任何充分理由),但如果您将其从启动屏幕中拆分出来,您可以跳过显示登录对话框。
在应用程序启动时创建对话框,如下所示:
Application implements IApplication {
@Override
public Object start(IApplicationContext context) throws Exception {
Display display = PlatformUI.createDisplay();
try {
LoginDialog dialog = new LoginDialog(display.getActiveShell());
if (dialog.open() == Dialog.CANCEL) {
return EXIT_OK;
}
int code = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
// Exit the application with an appropriate return code.
return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK;
} finally {
if (display != null) {
display.dispose();
}
}
}
然后,您可以通过检查所需的系统属性并使用属性值验证用户来跳过显示对话框:
String username = System.getProperty("username");
String pwd = System.getProperty("password");
if (username != null && pwd != null) {
// do something with username and password
} else {
LoginDialog dialog = new LoginDialog(display.getActiveShell());
if (dialog.open() == Dialog.CANCEL) {
return EXIT_OK;
}
}
另外,Platform.endSplash();
可能会有所帮助。
闪屏登录对话框是通过使用 SplashScreenHandler 实现的。这实际上已添加到您的应用程序包中。查看初始屏幕处理程序的源代码并在其中添加 VM 参数应该相对容易。
您也可以使用-noSplash
命令行选项禁用启动画面。