Подтвердить что ты не робот

Java Не удается подключиться к серверу окон X11, используя "localhost: 10.0" в качестве значения переменной DISPLAY

У меня есть script с помощью java для подключения к отображению X11 в порту 10.0 на localhost

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

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 10.04

4b9b3361

Ответ 1

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

export DISPLAY=:0

Ответ 2

Вам нужно указать параметр -Djava.awt.headless=true во время запуска.

Ответ 3

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

unset DISPLAY

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

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

Ответ 4

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

Ответ 5

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

<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>

Ответ 6

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

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

Ответ 7

После нескольких дней тщетного усилия по установке стеклянной рыбы на малине pi 2 с безголовым fedora 22, ниже работал у меня без сучка и задоринки

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

получил мою помощь от здесь

Ответ 8

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

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

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

Ответ 9

Сначала: запустите XQuartz

Второе: ssh -X user @ip_address

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

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

Ответ 10

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

Ответ 11

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

  • При запуске Xming установите флажок без контроля доступа.
  • В putty была запущена следующая команда: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

Замените XXX.XXX.XXX.XX на свой IP-адрес.

Ответ 12

Единственный способ, с помощью которого я работал, - запустить script с помощью шаблона. например sudo./glassfish-3.1.2.2-unix.sh -s template

Это устанавливает Glassfish в тихом режиме. http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html

Ответ 13

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

Ответ 14

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

Ответ 15

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

Ответ 16

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

Ответ 17

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

Ответ 18

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

Ответ 19

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

Ответ 20

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

apt install xvfb

И добавил эти строки в файл /etc/profile...

# 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

Ответ 21

В моем случае эта ошибка не была связана с портом DISPLAY. Я пытался загрузить XML в Windchill (PLM-программное обеспечение) и получил только вышеуказанную ошибку на терминале. В файле журнала я обнаружил, что мой XML файл поврежден. Возможно, у кого-то есть аналогичная проблема и он может использовать этот ответ.

Ответ 22

Сначала сделайте это либо в Build Phase of Jenkins, либо используя /etc/profile:

unset DISPLAY
export DISPLAY=:0

затем установите это свойство либо в java-коде, либо с помощью maven: -Djava.awt.headless = false

Ответ 23

Решаемые. Я просто выхожу из системы и выхожу из системы с помощью xorg!

Ответ 24

Для меня проблема заключалась в том, что 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