使用VNC时,Java swing应用程序无法正确渲染

8

使用Java 8在VNC桌面上启动Swing应用程序时,窗口会显示为空白。但是我使用JRE 7和非Swing应用程序(例如Eclipse)在相同的设置下正常运行。

是否有默认设置(例如3D加速)已经在JRE 8中启用?如何禁用它?


记录一下:该问题仅发生在Java 8版本中。已经测试过Java 9和11没有此问题。 - Seki
4个回答

19

简述:

  • Java和glxgears需要24位的颜色深度。
  • 确保X和VNC设置为使用24位的颜色深度,而不是16位或32位。

详情:

我在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。

我在tigervnc会话中的Kali盒子上运行OWASP ZAP时遇到了问题 - 窗口一直是空白的。将/etc/vnc.conf进行编辑,将默认深度从32更改为24即可解决问题。感谢Martin! - DanM
1
谢谢Martin!我在这个该死的错误上投了半天的时间。你的帖子救了我! - guenhter
1
在XRDP中也会出现同样的问题。编辑xrdp.ini(/etc/xrdp/rxrdp.ini)并将“xserverbpp=24”包含在[Xvnc]和[Xorg]配置中。 - Wilbert
我是一个新手。在RHEL 7中怎么改呢?我不确定tigervnc配置文件和xrdp配置文件在哪里。 - fractal

8

3
在Red Hat Enterprise Linux中,/etc/xrdp/xrdp.ini文件中有两个设置:
取消注释: serverbpp=24 更改现有项: max_bpp=24

我在Fedora 32上使用MPLABX ide/ipe时遇到了一个问题,它会以空白/白屏幕加载。经过多周的努力,我找到了这个解决方法,感谢您的分享。 - prd82

0
今天我升级了JetBrains pycharm到2019.x.x版本后遇到了这个问题(尝试了几个版本)。
与上述不同的是,我在vnc客户端和服务器上都配置了16位深度,导致当我启动升级后的pycharm时出现红色窗口且没有显示文本(旧版2018可以正常工作)。
将客户端(remmina-编辑单个连接配置)和服务器(tigervncserver / Xtigervnc)都切换到24位深度对我解决了这个问题。

这是一个问题吗? - Haroon nasir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接