2012-08-03 15 views
5

Ho un'applicazione Java che utilizza WebRenderer per un browser headless java. WebRenderer non richiede l'esecuzione di xserver e l'ho confermato disinstallando tutti i componenti x11 libs e xserver.L'applicazione Java lancia `Gtk-WARNING **: impossibile aprire display:` anche quando xserver non è richiesto

Tuttavia il problema è che si genera un errore: Gtk-WARNING **: cannot open display: in determinate condizioni. Dopo la ricerca ho scoperto che di solito genera quell'errore con i sistemi su cui è installato openJDK. Anche quando la versione java corrente proviene da Sun, ma è ancora installato openJDK. Per risolvere il problema, è necessario disinstallare libatk-wrapper-java e libgtk2.0-0 (che rimuove anche default-jre, cedtea-netx, libatk-wrapper-java-jni, libgtk2.0-bin e openjdk-6-jre).

Inoltre genera lo stesso errore in openSUSE (con Java da Sun). Ci sarebbe un modo per risolvere questo errore senza dover avviare xserver o disinstallare un gruppo di componenti che potrebbero essere richiesti per qualcos'altro? Qualsiasi aiuto è apprezzato.

+2

si avvia la JVM con 'java -Djava.awt.headless = true'? –

+0

L'ho provato, ma ottengo questo: 'Nessun protocollo specificato Gtk-WARNING **: impossibile aprire display:' – KrispyDonuts

risposta

1

Sì, utilizzare Xvfb.

In un terminale, si esegue Xvfb :1. Nell'altro terminale, si esegue DISPLAY=:1 ./yourapp.

Alcune distribuzioni hanno uno script xvfb-run che esegue la magia del lancio di Xvfb e della tua app sullo stesso comando.

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

Google per Xvfb per ulteriori informazioni

+0

Tuttavia, l'esecuzione di 'Xvfb: 1' avvia l'xserver, almeno questo è quello che sembra. Questa potrebbe essere una soluzione di backup, ma per ora sto vedendo se c'è un modo senza eseguire xserver. – KrispyDonuts

+0

Sì, ma l'obiettivo di 'Xvfb' è esattamente da utilizzare in questo tipo di situazione. Non richiederà alcuna scheda grafica o cose di fantasia con la tua memoria. È molto più leggero del normale "xserver". O risolvi l'app o dai un falso xserver senza schermo. – pzanoni

+0

Hmm vedo. L'unica preoccupazione è quando faccio a disinstallare tutte le librerie xserver e libgtk funziona bene. Quindi in quel caso non capisco davvero perché dipende da xserver quando libgtk è installato. – KrispyDonuts