Java swing应用程序无法使用VNC正确呈现

All*_*awk 6 java swing vnc java-8

当在使用Java 8的VNC桌面上启动时,Swing应用程序显示一个空白窗口.我没有这个问题,JRE 7非摆动应用程序(例如Eclipse)使用相同的设置正常运行.

是否存在某种默认设置,如3D加速或默认情况下已启用的设置JRE 8?我如何禁用它?

Mar*_*rey 11

我在VNC中也有空白的Java窗口,但是使用Java 7和Java 8,因此禁用xrender对我没有帮助也就不足为奇了.这可能会严重违反StackOverflow协议发布此处,但我找到了自己的方式,所以其他人也一定会这样做. -Dsun.java2d.opengl=true使文本可见,虽然抗锯齿就像20世纪80年代的混乱,但是我得到了虚假透明的窗口部分,总是相同的部分,干净的合成,所以不像驱动程序错误.注意到glxgears也显示了一个整洁的透明背景,当它在其他系统上是不透明的黑色时,我发现了一个针对"compton"的深思熟虑且信息丰富的错误报告,RGBA窗口始终是透明的#179.灵感来看xdpyinfo,我发现我的VNC服务器只提供深度为32的"视觉效果",即红色,绿色和蓝色各8位的视觉效果和8位alpha.似乎Java和glxgears想要一个不透明的视觉,所以深度为24之一.我的正常:0 X服务器将其作为默认值.对于-depth开关,man Xtigervnc说"默认值为24,其他可能的值为8,15 和16 - 其他任何可能导致应用程序出现奇怪行为",但Debian的 TigerVNC 临时包装,特别是在/etc/vnc.conf和中/usr/bin/tigervncserver,将其设置为默认为32. -depth 24突然一切都再次美丽,只有在需要的地方才有半透明. xdpyinfo透露了许多"视觉效果",包括深度32.


All*_*awk 7

在 Linux 系统上,我发现使用该-Dsun.java2d.xrender=false选项解决了这个问题。我认为 xrender 现在默认在 Java 8 上启用。

可以在此处找到 Java 2D 的系统属性:http : //docs.oracle.com/javase/8/docs/technotes/guides/2d/flags.html