【问题标题】:Java swing applications not rendering properly with VNCJava swing 应用程序无法使用 VNC 正确呈现
【发布时间】:2016-06-21 12:32:11
【问题描述】:

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

是否有某种默认设置,例如 3D 加速或在 JRE 8 上默认启用的某些设置?如何禁用它?

【问题讨论】:

  • 郑重声明:该问题仅出现在 Java 8 中。已使用 Java 9 和 11 进行测试。

标签: java swing java-8 vnc


【解决方案1】:

TL;DR

  • Java 和 glxgears 预计颜色深度为 24。
  • 确保将 X 和 VNC 设置为使用 24 的深度,而不是 16 或 32 等其他深度。

详情:

我在 VNC 中也有空白的 Java 窗口,但使用的是 Java 7 和 Java 8,所以禁用 xrender 对我没有帮助也就不足为奇了。这可能会使在此处发布此内容严重违反 StackOverflow 协议,但我在这里找到了自己的方式,所以其他人肯定也会这样做。 -Dsun.java2d.opengl=true 使文本可见,虽然抗锯齿就像 1980 年代的调色板乱七八糟的东西,但后来我得到了窗口的虚假透明部分,总是相同的部分,干净地合成,所以不像驱动程序错误.注意到 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's provisional packaging 用于 TigerVNC,特别是在 /etc/vnc.conf/usr/bin/tigervncserver,将其设置为默认值32。-depth 24 突然间一切都变得美丽了,只有在请求的地方才具有半透明性。 xdpyinfo 透露了许多“视觉效果”,包括深度 32。

【讨论】:

  • 我在tigervnc 会话中的Kali 机器上运行OWASP ZAP 时遇到了问题- 窗口一直是空的。编辑 /etc/vnc.conf 以将默认深度从 32 更改为 24 修复了它。谢谢,马丁!
  • 谢谢马丁!我在这个****错误上投入了半天时间。你的帖子救了我!
  • 在 XRDP 中也会出现同样的问题。编辑 xrdp.ini (/etc/xrdp/rxrdp.ini) 并在 [Xvnc] 和 [Xorg] 配置中包含“xserverbpp=24”。
  • 我是个菜鸟。如何在 RHEL 7 中更改它?我不确定tigervnc 配置文件和xrdp 配置文件在哪里
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    在 Red Hat Enterprise Linux 上,/etc/xrdp/xrdp.ini 文件中有两个设置:

    未注释:serverbpp=24 更改了现有项目:max_bpp=24

    【讨论】:

    • 我在 Fedora 32 上也遇到了 MPLABX ide/ipe 这个问题,它会加载一个空白/白色屏幕。几个星期后,我遇到了这个修复,感谢分享。
    【解决方案4】:

    我今天在将JetBrains pycharm升级到2019.x.x版本后遇到了这个问题(尝试了其中的几个)。

    与上述不同,我在 vnc 客户端和服务器上都配置了 16 位深度,这导致在我启动升级后的 pycharm 时出现一个没有显示文本的红色窗口(旧的 2018 版本运行良好)。

    将客户端(remmina - 编辑单个连接配置)和服务器(tigervncserver / Xtigervnc)切换到 24 位深度解决了我的问题。

    【讨论】:

    • 这是一个问题还是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多