在org.eclipse.jface.dialogs.TitleAreaDialog(GTK + 2和GTK + 3)

时间:2015-07-13 20:52:24

标签: eclipse gtk3 gtk2

在Eclipse 4.2.2(64位Linux)上,当在扩展的org.eclipse.jface.dialogs.TitleAreaDialog上执行okPressed时... Eclipse崩溃!
在CLEAN模式下运行Eclipse并尝试新工作区也无法防止崩溃。

总结以下详细信息:

  • 可以重新安装GTK
  • 是否有GTK的替代品 - 有效!?

最糟糕的情况是,我可以迁移到版本4.4.2 Eclipse但是......这需要一点时间,我无法确定使用Eclipse 4.4.2的客户服务器上是否存在相同或类似的问题。在DEBUG模式下运行Eclipse并未突出显示任何其他信息。

public class TopicDialog  extends TitleAreaDialog {
    //.....
    @Override
    protected void okPressed() {
        super.okPressed();
    }
}

对话框由代码显示:

final TopicDialog d = new TopicDialog(getShell());          
// Launch dialog        
Display.getDefault().syncExec(new Runnable() {              
    @Override
    public void run() {          
        d.open();   
    }
}); 

GTK堆栈跟踪在崩溃时被记录 - 见下文。我已经要求客户强制Eclipse使用GTK +2(而不是默认的GTK +3)并忽略cairoGraphics。所以eclipse.ini包含2个GTK特定设置:

--launcher.GTK_version
2
-Dorg.eclipse.swt.internal.gtk.cairoGraphics=false

堆栈跟踪:

3XMTHREADINFO "main" J9VMThread:0x0000000040E2F100, j9thread_t:0x00007F04B802DB20, java/lang/Thread:0x0000000000F25540, state:R, prio=6 
3XMJAVALTHREAD (java/lang/Thread getId:0x1, isDaemon:false) 
3XMTHREADINFO1 (native thread ID:0x516B, native priority:0x6, native policy:UNKNOWN) 
3XMTHREADINFO2 (native stack address range from:0x00007F04BF04E000, to:0x00007F04BFA4F000, size:0xA01000) 
3XMHEAPALLOC Heap bytes allocated since last GC cycle=685960 (0xA7788) 
3XMTHREADINFO3 Java callstack: 
4XESTACKTRACE at org/eclipse/swt/internal/gtk/OS._gdk_window_at_pointer(Native Method) 
4XESTACKTRACE at org/eclipse/swt/internal/gtk/OS.gdk_window_at_pointer(OS.java:5271) 
4XESTACKTRACE at org/eclipse/swt/widgets/Display.getCursorControl(Display.java:1413) 
4XESTACKTRACE at org/eclipse/swt/widgets/Control.gtk_leave_notify_event(Control.java:3066) 
4XESTACKTRACE at org/eclipse/swt/widgets/Widget.windowProc(Widget.java:1776(Compiled Code)) 
4XESTACKTRACE at org/eclipse/swt/widgets/Control.windowProc(Control.java:5116(Compiled Code)) 
4XESTACKTRACE at org/eclipse/swt/widgets/Display.windowProc(Display.java:4377(Compiled Code)) 
4XESTACKTRACE at org/eclipse/swt/internal/gtk/OS._gtk_widget_hide(Native Method) 
4XESTACKTRACE at org/eclipse/swt/internal/gtk/OS.gtk_widget_hide(OS.java:13119) 
4XESTACKTRACE at org/eclipse/swt/widgets/Shell.dispose(Shell.java:2306) 
4XESTACKTRACE at org/eclipse/jface/window/Window.close(Window.java:335) 
4XESTACKTRACE at org/eclipse/jface/dialogs/Dialog.close(Dialog.java:979) 
4XESTACKTRACE at org/eclipse/jface/dialogs/Dialog.okPressed(Dialog.java:940)     
4XESTACKTRACE at com/ibm/tivoli/pa/model/ui/dialogs/TopicDialog.okPressed(TopicDialog.java:135)     
4XESTACKTRACE at org/eclipse/jface/dialogs/Dialog.buttonPressed(Dialog.java:472)     
4XESTACKTRACE at org/eclipse/jface/dialogs/Dialog$2.widgetSelected(Dialog.java:624) 
4XESTACKTRACE at org/eclipse/swt/widgets/TypedListener.handleEvent(TypedListener.java:248)     
4XESTACKTRACE at org/eclipse/swt/widgets/EventTable.sendEvent(EventTable.java:84(Compiled Code))     
4XESTACKTRACE at org/eclipse/swt/widgets/Widget.sendEvent(Widget.java:1276) 
4XESTACKTRACE at org/eclipse/swt/widgets/Display.runDeferredEvents(Display.java:3562(Compiled Code)) 
4XESTACKTRACE at org/eclipse/swt/widgets/Display.readAndDispatch(Display.java:3186(Compiled Code)) 
4XESTACKTRACE at org/eclipse/jface/window/Window.runEventLoop(Window.java:825) 
4XESTACKTRACE at org/eclipse/jface/window/Window.open(Window.java:801)

0 个答案:

没有答案