Java-приложения Swing не отображаются должным образом с помощью VNC

Приложения Swing показывают пустое окно при запуске на рабочем столе VNC с Java 8. У меня нет этой проблемы с JRE 7, и приложения без Swing (например, Eclipse) работают правильно с теми же настройками.

Существуют ли какие-то настройки по умолчанию, такие как 3D-ускорение или что-то, что было включено по умолчанию на JRE 8? Как мне его отключить?


person AllanHawk    schedule 07.03.2016    source источник
comment
Для справки: проблема возникает только с Java 8. Протестировано с Java 9 и 11.   -  person Seki    schedule 05.12.2019


Ответы (4)


TL;DR

  • Java и glxgears ожидают глубину цвета 24.
  • Убедитесь, что X и VNC настроены на использование глубины 24, а не какую-либо другую глубину, например 16 или 32.

Подробности:

У меня тоже были пустые окна Java в VNC, но с Java 7 и Java 8, поэтому неудивительно, что отключение xrender мне не помогло. Это, вероятно, делает грубым нарушением протокола StackOverflow размещение этого здесь, но я нашел свой путь здесь, так что, несомненно, другие тоже. -Dsun.java2d.opengl=true сделал текст видимым, хотя сглаживание было похоже на что-то из 1980-х с испорченной палитрой, но потом я получил ложно прозрачные части окон, всегда одни и те же части, чисто скомпонованные, так что не похоже на ошибку драйвера. Заметив, что glxgears также отображается с аккуратным прозрачным фоном, тогда как в других системах он непрозрачно-черный, я нашел вдумчивый и информативный отчет об ошибке для комптона, Окна RGBA всегда прозрачны #179. Вдохновленный просмотром xdpyinfo, я обнаружил, что мой сервер VNC предлагает изображения только глубины 32, то есть изображения с 8 битами красного, зеленого и синего цветов и восемью битами альфы. Кажется, 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.

person Martin Dorey    schedule 25.05.2016
comment
У меня возникли проблемы с запуском OWASP ZAP на коробке Kali в сеансе tigervnc — окна продолжали появляться пустыми. Редактирование /etc/vnc.conf для изменения глубины по умолчанию с 32 до 24 исправило это. Спасибо, Мартин! - person DanM; 18.11.2016
comment
Спасибо, Мартин! Полдня потратил на эту **** ошибку. Ваш пост меня спас! - person guenhter; 13.09.2017
comment
Та же проблема возникает в XRDP. Отредактируйте xrdp.ini (/etc/xrdp/rxrdp.ini) и включите «xserverpp=24» в конфигурации [Xvnc] и [Xorg]. - person Wilbert; 08.11.2017
comment
Я новичок. Как изменить его в RHEL 7? Я не уверен, где находятся файлы конфигурации tigervnc и файлы конфигурации xrdp. - person fractal; 04.02.2020

В системе Linux я обнаружил, что использование параметра -Dsun.java2d.xrender=false решило проблему. Я думаю, что xrender теперь включен по умолчанию на Java 8.

Системные свойства для Java 2D можно найти здесь: http://docs.oracle.com/javase/8/docs/technotes/guides/2d/flags.html

person AllanHawk    schedule 26.03.2016

В Red Hat Enterprise Linux в файле /etc/xrdp/xrdp.ini было два параметра:

раскомментировано: serverbpp=24 изменен существующий элемент: max_bpp=24

person fractal    schedule 04.02.2020
comment
У меня была эта проблема с MPLABX ide/ipe также на Fedora 32, он загружался с пустым/белым экраном. Через много недель я наткнулся на это исправление, спасибо, что поделились. - person prd82; 31.07.2020

Я столкнулся с этой проблемой сегодня после обновления pycharm JetBrains до версии 2019.xx (пробовал несколько из них).

В отличие от вышеизложенного, я был настроен на 16-битную глубину как на клиенте, так и на сервере vnc, что привело к появлению красного окна без отображения текста, когда я запустил обновленный pycharm (более старые версии 2018 года работали нормально).

Переключение клиента (remmina - отредактируйте индивидуальную конфигурацию подключения) и сервера (tigervncserver/Xtigervnc) на 24-битную глубину решило проблему для меня.

person Shannon Dealy    schedule 22.11.2019
comment
это вопрос или что? - person Haroon nasir; 22.11.2019