2012-08-03 14 views
5

Tengo una aplicación Java que usa WebRenderer para un navegador sin cabeza Java. WebRenderer no requiere ejecutar xserver y lo he confirmado desinstalando todos los componentes x11 libs y xserver.La aplicación Java arroja `Gtk-WARNING **: no se puede abrir la pantalla:` incluso cuando no se requiere xserver

Sin embargo, el problema es que arroja un error: Gtk-WARNING **: cannot open display: en ciertas condiciones. Tras la investigación, descubrí que generalmente arroja ese error con los sistemas que tienen abierto JDK instalado. También cuando la versión actual de Java es de Sun pero openJDK aún está instalado. Para solucionarlo, necesitaría desinstalar libatk-wrapper-java y libgtk2.0-0 (que también elimina default-jre, cedtea-netx, libatk-wrapper-java-jni, libgtk2.0-bin y openjdk-6-jre).

También arroja el mismo error en openSUSE (con Java de Sun). ¿Habría alguna forma de solucionar este error sin tener que iniciar xserver o desinstalar un conjunto de componentes que podrían ser necesarios para otra cosa? Cualquier ayuda es apreciada.

+2

empieces que la JVM con 'java -Djava.awt.headless = true'? –

+0

Lo he intentado pero obtengo esto: 'No hay protocolo especificado Gtk-WARNING **: no se puede abrir la pantalla:' – KrispyDonuts

Respuesta

1

Sí, use Xvfb.

En una terminal, ejecuta Xvfb :1. En la otra terminal, ejecuta DISPLAY=:1 ./yourapp.

Algunas distribuciones tienen una secuencia de comandos xvfb-run que hace la magia de iniciar Xvfb y su aplicación en el mismo comando.

http://en.wikipedia.org/wiki/Xvfb

Google para Xvfb para más información

+0

Sin embargo, al ejecutar 'Xvfb: 1' se inicia el xserver, al menos eso es lo que parece. Esta podría ser una solución de respaldo, pero por ahora estoy viendo si hay una forma de hacerlo sin ejecutar xserver. – KrispyDonuts

+0

Sí, pero el objetivo de 'Xvfb' es exactamente el que se utilizará en este tipo de situación. No requerirá ninguna tarjeta gráfica ni hará cosas extravagantes con su memoria. Es mucho más ligero que tu "servidor x" normal. O arreglas la aplicación o le das un xserver falso sin pantalla. – pzanoni

+0

Hmm Ya veo. La única preocupación es cuando desinstalo todas las bibliotecas de xserver y libgtk funciona bien. Entonces, en ese caso, no entiendo por qué depende de xserver cuando se instala libgtk. – KrispyDonuts

Cuestiones relacionadas