0
커맨드 라인에서 실행 가능한 RCP 응용 프로그램을 만들려고합니다. fitst 부분은 괜찮습니다. cmdline 인수를 구문 분석하고 원하는 것을 수행 할 수 있습니다. 하지만 그 후에는 응용 프로그램을 종료하고 싶습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?플러그인에서 일식 RCP 응용 프로그램을 종료하는 올바른 방법은 무엇입니까?
나는 이것을 시도했다 : PlatformUI.getWorkbench(). close(); 이것은 내가 시작할 때 행동을 어떻게
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
at org.eclipse.swt.SWT.error(SWT.java:4282)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
at org.eclipse.swt.widgets.Display.release(Display.java:3263)
at org.eclipse.swt.graphics.Device.dispose(Device.java:249)
at uk.ac.bolton.archimate.editor.Application.start(Application.java:65)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4282)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at org.eclipse.swt.SWT.error(SWT.java:4168)
at org.eclipse.swt.widgets.Widget.error(Widget.java:466)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:403)
at org.eclipse.swt.browser.Browser.checkWidget(Browser.java:195)
at org.eclipse.swt.browser.Browser.addProgressListener(Browser.java:386)
at org.rulez.magwas.styledhtml.EventLog$1.run(EventLog.java:80)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
... 18 more
: 당신은이 목적을 위해 올바른 API를 사용하는
protected void refreshPluginActions() {
if (!PlatformUI.isWorkbenchRunning()) {
return;
}
Display.getDefault().asyncExec(new Runnable() {
public void run() {
runcmd();
}
});
}