2012-04-15 5 views
53

У меня есть скрипт, используя Java для подключения к дисплею X11 в порту 10.0 на локальном хостеJava не удается подключиться к серверу окна X11, используя «локальный: 10.0» в качестве значения переменной DISPLAY

, но я получаю всегда эта ошибка

java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable. 
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) 
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62) 
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82) 
    at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at java.awt.Toolkit$2.run(Toolkit.java:849) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841) 
    at ij.io.Opener.openJpegOrGif(Opener.java:367) 
    at ij.io.Opener.openImage(Opener.java:220) 
    at ij.io.Opener.openImage(Opener.java:249) 
    at ij.io.Opener.open(Opener.java:116) 
    at ij.IJ.open(IJ.java:1112) 
    at ij.macro.Functions.open(Functions.java:2006) 
    at ij.macro.Functions.doFunction(Functions.java:129) 
    at ij.macro.Interpreter.doStatement(Interpreter.java:205) 
    at ij.macro.Interpreter.doBlock(Interpreter.java:515) 
    at ij.macro.Interpreter.runUserFunction(Interpreter.java:278) 
    at ij.macro.Interpreter.getFactor(Interpreter.java:1200) 
    at ij.macro.Interpreter.getTerm(Interpreter.java:1162) 
    at ij.macro.Interpreter.getExpression(Interpreter.java:1145) 
    at ij.macro.Interpreter.getBooleanExpression(Interpreter.java:881) 
    at ij.macro.Interpreter.getLogicalExpression(Interpreter.java:857) 
    at ij.macro.Interpreter.getBoolean(Interpreter.java:850) 
    at ij.macro.Interpreter.doIf(Interpreter.java:829) 
    at ij.macro.Interpreter.doStatement(Interpreter.java:217) 
    at ij.macro.Interpreter.doBlock(Interpreter.java:515) 
    at ij.macro.Interpreter.doStatement(Interpreter.java:241) 
    at ij.macro.Interpreter.doIf(Interpreter.java:831) 
    at ij.macro.Interpreter.doStatement(Interpreter.java:217) 
    at ij.macro.Interpreter.doStatements(Interpreter.java:195) 
    at ij.macro.Interpreter.run(Interpreter.java:99) 
    at ij.macro.Interpreter.run(Interpreter.java:65) 
    at ij.macro.Interpreter.run(Interpreter.java:75) 
    at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:127) 
    at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:112) 
    at ij.IJ.runMacroFile(IJ.java:103) 
    at ij.ImageJ.main(ImageJ.java:517) 

Я попробовал все, чтобы решить эту проблему, как:

export DISPLAY=:10.0 
export DISPLAY=localhost:10.0 

Я попытался также порт 0.0, но я получаю всегда одну и ту же ошибку

после попытки Xhost

xhost +local:all 
xhost: unable to open display "" 
xhost: unable to open display ":10.0" 

, как я могу это исправить я подумал, что X-сервер не подножка поэтому я попытался startx его говорит его подножка в этом порту

моя система Ubuntu Server Edition 10,04

ответ

18

Эта команда помогла мне решить эту проблему:

export DISPLAY=:0 
+22

'unset DISPLAY' помог мне (с' export DISPLAY =: 0' Я получил ошибку 'Не могу подключиться к серверу окон X11, используя ': 0'' – beluchin

+0

Где вы положили –

+0

Это команда. в терминале. –

45

При запуске необходимо указать параметр -Djava.awt.headless=true.

+0

Большое спасибо, но где я должен укажите это точно? – ElTero

+0

ОК, я сделал это, но я получил новую ошибку – ElTero

+1

Исключение из темы "main" java.awt.He adlessException at java.awt.GraphicsEnvironment.checkHeadless (GraphicsEnvironment.java:1 73) – ElTero

6

Это исправить:

/usr/bin/java -Djava.awt.headless=true $Your_program 
29

Удалить переменную DISPLAY

unset DISPLAY 

Это помогает в большинстве случаев (например, начиная с серверов приложений или других инструментов на основе Java) и избегает изменить все, что многие командной строки.

Также может быть удобно добавить его в .bash_profile для выделенного пользователя приложения-сервера/инструментов.

0

Я столкнулся с той же ошибкой, когда я запустил команду jconsole на пульте дистанционного управления. Я хочу изменить параметр в jconsole, который запускается на удаленном хосте Linux, я могу войти в систему с помощью secureCRT, терминал выдаст эту информацию об ошибке. К счастью, при использовании Putty это нормально. Weird ....

0

Если вы видите эту ошибку в Hudson, попробуйте удалить .java-каталог из своего домашнего каталога, это может сработать для вас.

5

В случае, если кто-нибудь пытается запустить автоматизированные модульные тесты через Maven-плагин-верный на CI (Дженкинс, ..), и получить вышеуказанную ошибку, не забудьте обновить безошибочные конфигурации плагина:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${maven-surefire-plugin.version}</version> 
    <configuration> 
      <systemPropertyVariables> 
       <java.awt.headless>true</java.awt.headless> 
      </systemPropertyVariables> 
     </configuration> 
</plugin> 
0

Если вы запустили приложение на удаленном сервере во время входа в систему ssh, то другим способом было бы запустить ssh с параметром -x или добавить ForwardX11 no в ваш /etc/ssh/ssh_config. В этом случае ssh не будет создавать переменную среды DISPLAY.

0

Michael-O дал полезный подход для решения проблемы. Другой способ решить это - запустить сервер с помощью Putty Console.

2

После нескольких дней бесплодных усилий установки GlassFish на Raspberry Pi 2 с обезглавленной фетровой шляпой 22, ниже работали для меня без сучка

unset DISPLAY 
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar 

получил мою помощь от here

1

Первого: начать XQuartz

Второе: SSH-X пользователь @ ip_address

...: начать процесс

если вы SSH, а затем начать XQuartz вы получите эту ошибку

-1

Для меня проблема в том, что Xorg-x11-Xauth не была установлена. Я установил его, а затем он сработал.

пакеты, которые я сейчас:

  • libx11-синфазного 1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • Xorg-x11-DRV-ати-7.6.1-2.el6.noarch-вашему приводу прошивку
  • Xorg-x11-Xauth-1.0.9-1.el6.x86_64
1

В моем случае не осталось в моей машине пространство, и я столкнулся с такой же проблемой. Несколько раз это могло быть проблемой пространства. Проверьте пространство в среде Linux/Unix и убедитесь, что у вашего компьютера достаточно места.

1

Я использовал Xming и получил аналогичную ошибку. Следующие шаги были предприняты для устранения проблемы:

  1. В Xming launch check box отсутствует контроль доступа.
  2. В замазкой побежал следующую команду: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

Replace XXX.XXX.XXX.XX с IP-адресом.

2

Для меня вход в систему как -Y вместо -X работал.

В случае, если у вас есть ненадежный X11, как показано ниже, а затем попробовать -Y флаг вместо этого (если вы доверяете хост):

Предупреждение: ненадежный X11 Настройка переадресации не удалось: Xauth ключевых данных не генерируется

8

Я думаю, что вы работаете в режиме sudo.Пожалуйста, проверьте в пользовательском режиме и повторите попытку

+2

Это была моя проблема. Кажется странным, чтобы не было возможности запускать с правами root, хотя? – javajavajava

+0

Почему я не могу использовать sudo? –

+0

@javajavajava yup –

0

Если вы запускаете свой код от Jenkins, включите опцию «Запустить Xvfb перед сборкой и закройте ее после», возможно, это поможет. Это помогло мне.

0

изменение другому пользователю и попробуйте кроме root. меня устраивает.

0

Я только что не вышел из корня перед запуском ./studio.sh Все установлено.

0

Для Ubuntu 17.10 Установите X виртуальный буфер кадра (Xvfb)

apt install xvfb 

И добавил эти строки в файле и т.д.// Профиль ...

# Start the X virtual frame buffer (Xvfb) 
if [ -f /usr/X11R6/bin/Xvfb ]; then 
/usr/X11R6/bin/Xvfb :1 -screen 0 1366x768x32 
fi 

# Set the DISPLAY variable for the X virtual frame buffer (Xvfb) 
export DISPLAY=localhost:1.0