I’m having some issues using Matlab2018a in X2go. When using xfce4 (and KDE) desktop it causes some exception when the X2go window is hidden or resized. It also will hide all of the button widgets in Matlab until I mouse over them.

 

When I change the session type to ‘Single Application: Terminal’, and then typing ‘matlab &’ in the terminal it works perfectly fine.

 

This is the exception that Matlab throws, usually many times:

 

Exception in thread "AWT-EventQueue-0": java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData

                at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:148)

                at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:356)

                at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)

                at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)

                at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:67)

                at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)

                at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)

                at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)

                at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)

                at javax.swing.ImageIcon.paintIcon(ImageIcon.java:425)

                at com.mathworks.toolstrip.plaf.GalleryButtonUI.paintContent(GalleryButtonUI.java:115)

                at com.mathworks.toolstrip.plaf.RegularButtonUI.paintContent(RegularButtonUI.java:65)

                at com.mathworks.toolstrip.plaf.ToolstripButtonUI.paint(ToolstripButtonUI.java:198)

                at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)

                at javax.swing.JComponent.paintComponent(JComponent.java:780)

                at com.mathworks.mwswing.MJButton.paintComponent(MJButton.java:432)

                at javax.swing.JComponent.paint(JComponent.java:1056)

                at com.mathworks.mwswing.MJButton.paint(MJButton.java:410)

                at javax.swing.JComponent.paintChildren(JComponent.java:889)

                at javax.swing.JComponent.paint(JComponent.java:1065)

                at javax.swing.JComponent.paintChildren(JComponent.java:889)

                at javax.swing.JComponent.paint(JComponent.java:1065)

                at javax.swing.JComponent.paintChildren(JComponent.java:889)

                at javax.swing.JComponent.paint(JComponent.java:1065)

                at javax.swing.JComponent.paintChildren(JComponent.java:889)

                at javax.swing.JComponent.paint(JComponent.java:1065)

                at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)

                at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)

                at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)

                at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:306)

                at javax.swing.RepaintManager.paint(RepaintManager.java:1272)

                at javax.swing.JComponent._paintImmediately(JComponent.java:5158)

                at javax.swing.JComponent.paintImmediately(JComponent.java:4969)

                at javax.swing.RepaintManager$4.run(RepaintManager.java:831)

                at javax.swing.RepaintManager$4.run(RepaintManager.java:814)

                at java.security.AccessController.doPrivileged(Native Method)

                at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

                at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)

                at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)

                at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)

                at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)

                at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)

                at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

                at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

                at java.awt.EventQueue.access$500(EventQueue.java:97)

                at java.awt.EventQueue$3.run(EventQueue.java:709)

                at java.awt.EventQueue$3.run(EventQueue.java:703)

                at java.security.AccessController.doPrivileged(Native Method)

                at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

                at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

                at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

                at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

                at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

                at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

                at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

                at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)