2012-08-03 9 views
5

Ich habe eine Java-Anwendung, die WebRenderer für einen Java Headless Browser verwendet. WebRenderer benötigt keinen xserver zur Ausführung und ich habe dies durch die Deinstallation aller x11 libs und xserver Komponenten bestätigt.Java-Anwendung wirft `Gtk-WARNUNG **: kann nicht öffnen Anzeige:` auch wenn xserver nicht erforderlich ist

Allerdings ist das Problem, es wirft einen Fehler: Gtk-WARNING **: cannot open display: unter bestimmten Bedingungen. Bei Recherchen habe ich festgestellt, dass dieser Fehler normalerweise bei Systemen auftritt, auf denen openJDK installiert ist. Auch wenn die aktuelle Java-Version von Sun stammt, aber openJDK immer noch installiert ist. Um es zu beheben, müsste ich libatk-wrapper-java und libgtk2.0-0 deinstallieren (das entfernt auch default-jre, cedtea-netx, libatk-wrapper-java-jni, libgtk2.0-bin und openjdk-6-jre).

Es wirft auch den gleichen Fehler in openSUSE (mit Java von Sun). Wäre es möglich, diesen Fehler zu beheben, ohne xserver starten zu müssen oder eine Reihe von Komponenten zu deinstallieren, die für etwas anderes benötigt werden? Jede Hilfe wird geschätzt.

+2

Beginnen Sie die JVM mit 'java -Djava.awt.headless = true'? –

+0

Ich habe das versucht, aber ich bekomme das: 'Kein Protokoll angegeben Gtk-WARNUNG **: kann nicht öffnen Anzeige:' – KrispyDonuts

Antwort

1

Ja, verwenden Sie Xvfb.

In einem Terminal führen Sie Xvfb :1. In dem anderen Terminal führen Sie DISPLAY=:1 ./yourapp aus.

Einige Distributionen haben ein xvfb-run Skript, das die Magie des Startens Xvfb und Ihrer App auf dem gleichen Befehl ausführt.

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

Google für Xvfb für weitere Informationen

+0

Allerdings läuft 'Xvfb: 1' startet den Xserver, zumindest so scheint es. Dies könnte eine Backup-Lösung sein, aber im Moment sehe ich, ob es einen Weg gibt, ohne xserver laufen zu lassen. – KrispyDonuts

+0

Ja, aber das Ziel von 'Xvfb' ist genau in dieser Situation zu verwenden. Es werden keine Grafikkarten benötigt oder schickes Zeug mit deinem Gedächtnis. Es ist viel leichter als dein normaler "xserver". Entweder reparierst du die App oder du gibst ihr einen falschen xserver ohne Bildschirm. – pzanoni

+0

Hmm ich verstehe. Die einzige Sorge ist, wenn ich alle xserver Bibliotheken und libgtk deinstalliere, funktioniert es gut. In diesem Fall verstehe ich nicht wirklich, warum es auf xserver ankommt, wenn libgtk installiert ist. – KrispyDonuts

Verwandte Themen