SWT eclipse浏览器无法在Linux

时间:2016-11-09 07:26:42

标签: java linux eclipse eclipse-plugin swt

我已经尝试过eclipse GIT示例来打开SWT浏览器 参考:http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet260.java 这段代码在Windows上运行没有任何问题。但我在Linux中遇到异常。

我正在开发一个eclipse插件,它有一个存储库设置页面,它通过在覆盖方法@Override中扩展“AbstractRepositorySettingsPage”创建“public void run(IProgressMonitor a_monitor)抛出CoreException”我在这个方法中创建Display

更新 如果我通过Linux中的main()方法运行它,这段代码就可以工作。

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)

AFAIK上面的异常是因为它试图创建一个新的Display对象所以我试图用现有的NON UI线程创建Display并打开浏览器

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() 
            {
                public void run() 
                {
                   Shell aShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
                    Shell myShell = new Shell (aShell , SWT.SHELL_TRIM);
                    // Very important, generally parents must have a layout set to display children
                    myShell.setLayout (new FillLayout()); 
                    Browser browser = new Browser (myShell, SWT.NONE);
                    browser.setUrl ("http://www.google.de");
                    myShell.layout();
                    myShell.open();
                }
            });

以上代码段会打开浏览器,但不允许在打开的搜索引擎中输入任何内容。我想在可用的文本框中输入,并且它也不会在单击关闭按钮时关闭打开的浏览器。我终止了日食。

0 个答案:

没有答案