SWTError:未在Eclipse插件开发中实现[多个显示]

时间:2016-10-26 10:17:41

标签: java ubuntu eclipse-plugin

我有插件项目,我正在使用

Display display = new Display(); // twice 

此插件在Windows上正常运行。

但是当我在Linux上运行插件时会抛出一个错误:

org.eclipse.swt.SWTError: Not implemented [multiple displays]
Root exception:
    org.eclipse.swt.SWTError: Not implemented [multiple displays]
    at org.eclipse.swt.SWT.error(SWT.java:4423)
    at org.eclipse.swt.widgets.Display.checkDisplay(Display.java:767)
    at org.eclipse.swt.widgets.Display.create(Display.java:908)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:156)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:507)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:498)
    at com.test$OpenPage.run(test.java:267)
    at org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositorySettingsPage$29.run(AbstractRepositorySettingsPage.java:1964)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

我在Windows 7 / 8.1 / 10(工作正常)和Ubuntu(不工作)上测试过它

2 个答案:

答案 0 :(得分:2)

在某些平台上,SWT不允许创建多个显示器。

但是,插件代码根本不应创建Display。在工作台启动期间,将为您创建一个可以通过

访问的显示
PlatformUI.getWorkbench().getDisplay()

或通过从现有小部件获取显示,例如:

void createControls( Composite parent ) {
  Display display = parent.getDisplay();
  ...

答案 1 :(得分:1)

对多个Display对象的支持因平台而异。查看源代码,Linux / GTK或macOS不支持。

要获得完全的便携性,您需要坚持使用单个Display设备。通常没有必要使用多个。