使用Java 8在VNC桌面上启动Swing应用程序时,窗口会显示为空白。但是我使用JRE 7
和非Swing应用程序(例如Eclipse)在相同的设置下正常运行。
是否有默认设置(例如3D加速)已经在JRE 8
中启用?如何禁用它?
简述:
详情:
我在VNC中也遇到了空白的Java窗口,但使用Java 7和Java 8后,禁用xrender
并没有什么帮助。这可能违反了StackOverflow协议,在此发布这个问题可能不太合适,但我找到了这里,其他人也一定会找到。使用-Dsun.java2d.opengl=true
可以使文本可见,尽管抗锯齿效果像是上世纪80年代的东西,调色板混乱,但我得到了虚假的透明窗口部分,总是相同的部分,干净地组合在一起,所以不像是驱动程序错误。注意到glxgears也显示为一个漂亮的透明背景,而在其他系统上则是不透明的黑色,我发现有一个关于"compton"的周到且信息丰富的错误报告RGBA windows are always transparent #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。-Dsun.java2d.xrender=false
选项可以解决问题。我认为在Java 8中,xrender现在已经默认启用。