“X11 DISPLAY 변수 없음”-무슨 의미입니까?


102

Linux 시스템 (Slackware)에 Java 애플리케이션을 설치하려고합니다.

다음과 같은 오류가 발생했는데 이해가되지 않습니다.

문제에 접근하는 방법을 알려주시겠습니까? 감사합니다.

내가 얻는 것은 다음과 같습니다. (일부 X11 DISPLAY 변수를 설정해야하지만 어떤 값을 어떻게 제공해야합니까?)

~$ java -jar gate-5.0-beta1-build3048-installer.jar
- ERROR -

java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:159)
at java.awt.Window.<init>(Window.java:407)
at java.awt.Frame.<init>(Frame.java:402)
at net.sourceforge.mlf.metouia.borders.MetouiaDotsBuf fer.<init>(MetouiaDotsBuffer.java:105)
at net.sourceforge.mlf.metouia.borders.MetouiaDots.<i nit>(MetouiaDots.java:66)
at net.sourceforge.mlf.metouia.borders.MetouiaToolBar Border.<init>(MetouiaToolBarBorder.java:49)
at net.sourceforge.mlf.metouia.MetouiaLookAndFeel.ini tComponentDefaults(MetouiaLookAndFeel.java:241)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefault s(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefault s(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:581)
at com.izforge.izpack.installer.GUIInstaller.loadLook AndFeel(GUIInstaller.java:373)
at com.izforge.izpack.installer.GUIInstaller.<init>(G UIInstaller.java:116)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:30
at com.izforge.izpack.installer.Installer.main(Instal ler.java:62)

나는 같은 문제가 있습니다, 그것은 콘솔에서 완벽하게 작동하지만 이클립스를 사용하면 동일한 예외가 발생합니다. 심지어 코드 줄을 넣었습니다. Process proc_exporting = Runtime.getRuntime (). exec ( "sudo export DISPLAY = : 0.0") ; 여전히 작동하지 않습니다
hb.Sara

3
puTTY를 통해 원격으로 콘솔에 연결할 때이 문제를 해결하는 데 필요한 정보를 제공하는 답변은 없습니다. SSH를 다루는 모든 대답은 실제로 SSH를 작동시키는 방법을 설명하지 않습니다. 이 문제를 해결하는 질문을 아는 사람이 있습니까?

답변:


120

메인 디스플레이에 있다면

export DISPLAY=:0.0

또는 csh 또는 tcsh를 사용하는 경우

setenv DISPLAY :0.0

앱을 실행하기 전에

사실 자동으로 설정되지 않아 놀랍습니다. 그래픽이 아닌 터미널에서이 애플리케이션을 시작하려고합니까? 그렇지 않은 경우 기본 .profile, .login, .bashrc 또는 .cshrc를 수정 했습니까?

DISPLAY를 : 0.0으로 설정하면 내가 말했듯이 메인 디스플레이에 앉아 있거나 적어도 메인 디스플레이가 사용자 ID로 로그온되어 있다고 가정합니다. 로그온하지 않았거나 다른 사용자 ID이면 실패합니다.

다른 컴퓨터에서 들어오고 해당 컴퓨터의 기본 디스플레이에 있고 X를 실행하고있는 경우 "ssh -X hostname"을 사용하여 해당 호스트에 연결할 수 있으며 ssh는 X 디스플레이를 다시 전달합니다. . ssh는 또한 DISPLAY 환경 변수가 올바르게 설정되었는지 확인합니다 (위에서 언급 한 다양한 도트 파일에서 엉망이되지 않는 경우). "ssh -X"세션에서 DISPLAY 환경 변수는 "localhost : 11.0"과 같은 값을 가지며, ssh가 로컬 상자로 터널링하는 소켓을 가리 킵니다.


안녕하세요, 대단히 감사합니다. 첫 번째가 저에게 효과적이었습니다. 예, 그래픽이 아닌 터미널에서 시작합니다.
user42155

그래도 그래픽 디스플레이에 액세스하려는 것 같습니다. 그래픽 디스플레이를 사용할 수 없거나 다른 사용자 ID에 속하는 경우 실행하지 않도록주의하십시오.
Paul Tomblin

3
이것은 콘솔에 있기 때문에 작동했습니다. 다른 터미널에 있다면 터미널에서 X 서버를 실행 한 다음 컴퓨터를 가리 키도록 환경을 설정해야합니다 (예 : export DISPLAY = 'pauls 터미널의 호스트 이름': 0.0)
KevinDTimm

@kevindtimm, 좋은 점-ssh -X에 대한 @Mikeage의 정보를 내 대답에 통합하겠습니다.
Paul Tomblin

1
X 서버에 연결해야하는 자동화 된 작업을 실행해야하는 경우 가상 X 서버를 생성하는 xvfb를 볼 수 있습니다. 이것은 일부 배치 테스트 또는 실행 테스트에 매우 유용합니다.
Wichert Akkerman 2011

10

X11 환경에서 실행하고 있습니까? 터미널 창을 사용할 수 있지만 X 내에 있어야합니다 (그래픽 로그인 후 또는 startx를 실행하여).

이미 그래픽 환경에있는 경우 쉘 (bash, sh 등)과 같은 bash의 경우 export DISPLAY = : 0을 시도하고 C 쉘 기반 쉘 (csh, tcsh 등)의 경우 setenv DISPLAY : 0을 시도하십시오.

SSH를 통해 다른 컴퓨터에서 연결 한 경우 -X 옵션을 사용하여 앉아있는 컴퓨터의 그래픽 인터페이스를 표시합니다 (여기서 실행되는 X 서버가있는 경우 (예 : Windows 용 xming 및 표준 Linux X 섬기는 사람).


안녕하세요, 저는 startx를 실행하고 있습니다.
user42155

아 맞다, 슬랙웨어. 10 년 전에 마지막으로 사용했을 때와 같이 여전히 베어 본 상태입니까?
Paul Tomblin

기본적으로 런레벨 3에서 시작합니다. 물론 런레벨 5에서 ​​시작하라고하면 KDE를 설치했다고 가정하면 예쁜 KDM 로그인 메뉴가 나타납니다.
Adam Jaskiewicz

감사! CentOS 및 SSH (퍼티) 사용 : export DISPLAY=:0
jacktrades

8

PuTTy에서 X11 전달 을 활성화해야합니다.

그렇게하려면 PuTTy를 열고 Connection => SSH => Tunnels 로 이동 하여 Enable X11 forwarding을 선택합니다.

또한 서버에 sudo하고 여기에 아래 변수를 내보내십시오 .IP는 로컬 컴퓨터의 IP입니다.

export DISPLAY=10.75.75.75:0.0

여기에 이미지 설명 입력


4

설명과 유사한 경우 문제가 될 수있는 한 가지 더-X는 전달되지 않고 $ DISPLAY는 원격 측에 'xauth'프로그램이 설치되지 않은 경우 설정되지 않습니다. "ssh -Xv ip_address"를 실행할 때 검색하는 것을 볼 수 있으며 찾을 수없는 경우 실패합니다. 이는 상세 모드 (실패 IMO)를 설정하지 않으면 표시되지 않습니다. 일반적으로 동일한 이름의 패키지에서 'xauth'를 찾을 수 있습니다.


3

매우 쉬움,이 같은 문제가 있었는데 내가 한 일은 표시하는 데 도움이 될 앱을 다운로드하고 설치하는 것이었고 오류를 수정했습니다.

이 앱을 다운로드 xming :

http://sourceforge.net/project/downloading.php ?

설치 후이 링크의 설정을 사용하십시오.

http://www.geo.mtu.edu/geoschem/docs/putty_install.html 또는 다음 단계를 따르세요.

PuTTy 및 Xming 설치 / 구성

PuTTy 및 Xming이 PC에 다운로드되면 해당 지침에 따라 설치합니다.

Xming 구성

Xming이 설치되면 'XLaunch'라는 응용 프로그램을 실행하고 설정이 다음과 같은지 확인합니다.

  • 디스플레이 설정 창에서 기본 항목을 선택하고 다음을 클릭하십시오.
  • 세션 유형 창에서 다음을 클릭하십시오.
  • 추가 매개 변수 창에서 다음을 클릭합니다 (알림 클립 보드 확인란이 참).
  • 구성을 저장하고 클릭하여 완료합니다.

PuTTy 구성

PuTTy를 설치 한 후 바탕 화면에서 PuTTy 아이콘을 두 번 클릭하고 다음과 같이 구성합니다.

로그인 프로필을 만든 다음 저장하는 것을 보여줍니다.

  • ssh-> X11에서 확인란을 클릭하여 X11 전달을 활성화합니다.
  • X 표시 위치 텍스트 상자에 localhost : 0.0을 입력합니다.

프로필을 저장 한 다음 원격으로 서버에 연결하여 테스트합니다.

건배!!!


답변 자체에 링크의 필수 정보를 포함 해주세요. 답변 자체가 결국 죽어서 답변을 쓸모 없게 만들 수 있기 때문입니다.
plamut

2

이를 수행하는 방법에는 여러 가지가 있습니다. 나는 나에게 편리한 아래 작업을 수행했으며 항상 잘 작동합니다.

  1. 원격 서버에서 xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fonts를 설치해야합니다.
  2. 로컬 데스크탑에서 Xming 서버를 실행하십시오.
  3. putty에서 서버로 ssh를 보내기 전에 X11 전달을 활성화하고 표시 위치를 localhost : 0.0으로 설정합니다.
  4. 서버에서 .Xauthority 파일이 생성되고 DISPLAY 변수가 이미 설정되어 있음을 알 수 있습니다.

    $ xauth 목록

    $ xauth 추가

테스트하려면 xclock 또는 xeyes를 입력하십시오.

참고 : 사용자를 전환하려면 .Xauthority 파일을 각 사용자의 홈 디렉토리에 복사하고 해당 사용자의 DISPLAY 변수도 내보내십시오.


0

Byobu 터미널 내에서 스크립트를 실행하면 JDK 8 및 Netbeans를 설치하려고 할 때 Ubuntu 14.04.01에서 동일한 문제가 발생했습니다.

Byobu를 종료하고 (그래픽 터미널에서) 스크립트를 실행하십시오.


0

초기 확인.

1) DISPLAY를 다른 컴퓨터로 내보낼 때 xhost +해당 컴퓨터에 명령 을 입력했는지 확인하십시오 . 이 명령을 사용하면 다른 컴퓨터가이 컴퓨터에서 DISPLAY를 내보낼 수 있습니다. 보안상의 제약이있을 수 있습니다. 확인 ssh -X MachineIP이 필요하지 xhost +않습니까?

2) JCONSOLEJVM 프로세스가 다른 사용자와 함께 실행될 수 있고 다른 사용자와 함께 DISPLAY를 내보내므로 일부 프로세스가 모든 프로세스를 표시하지 않습니다. 그래서 더 잘 따라CD_DIR>sudo ./jconsole

3) WAS (WEBSPHERE); jconsole은 Java 서버 프로세스를 연결할 수 없습니다. 그 시간은 링크까지 가서 연결을 시도하십시오. 이것은 나를 위해 일했습니다. 이 페이지는 jconsole이 해당 서버에 연결할 수 있도록 일부 변수를 초기화하고있을 수 있습니다.

WAS 콘솔> 애플리케이션 서버> server1> 프로세스 정의> Java Virtual Machine


나는 AIX (명령 줄 인터페이스 만 사용 가능하고 DISPLAY UI가 없음) 시스템에서 동일한 문제에 직면했습니다. 설치하여 해결했습니다.

Windows 용 NX 클라이언트

1 단계 : Windows 시스템을 통해 GUI 콘솔을 사용할 수있는 유닉스 박스에 연결했습니다.
2 단계 : UNIX 상자에서 AIX 상자에 SSH를 사용합니다.
3 단계 : "export DISPLAY = UNIXMACHINE : NXClientPORTConnectedMentionedOnTitle"과 같이 DISPLAY를 설정합니다.
4 단계 : 이제 DISPLAY가 필요한 프로그램을 실행합니다. 이 UNIX 상자에서 실행됩니다.

VNC

디스플레이가 가능한 UNIX 상자에 VNC를 설치 한 경우; Windows 및 NX Client가 필요하지 않습니다. 1 단계 : VNC를 사용하여 GUI 콘솔을 사용할 수있는 Unix 상자에 연결합니다.
2 단계 : UNIX 상자에서 AIX 상자에 SSH를 사용합니다.
3 단계 : "export DISPLAY = UNIXMACHINE : VNCPORT"와 같이 DISPLAY를 설정합니다.
4 단계 : 이제 DISPLAY가 필요한 프로그램을 실행합니다. 이 UNIX 상자에서 실행됩니다.

그밖에

1 단계 : 해당 UNIX 상자에서 AIX 상자에 SSH를 사용합니다.
2 단계 : "export DISPLAY = UNIXMACHINE : VNCPORT"와 같이 DISPLAY를 설정합니다.
3 단계 : 이제 DISPLAY가 필요한 프로그램을 실행합니다. 이 UNIX 상자에서 실행됩니다.


0

Linux의 Windows에서 작동하는 X Window 응용 프로그램을 얻으려는 사람들을 위해 :

나를 위해 일한 것은 내 Windows 컴퓨터에 xming 서버를 설정하고 Linux 호스트에 연결할 때 putty에서 X11 전달 옵션을 설정하고 디스플레이 포트가있는 Windows IP 주소를 입력 한 다음 Windows IP 주소가있는 디스플레이 변수를 입력하는 것입니다 .0.0

xming 서버가 해당 호스트의 트래픽을 허용하도록 Linux 호스트 IP 주소를 X0.hosts 파일에 추가하는 것을 잊지 마십시오. 그것을 알아내는 데 시간이 걸렸습니다.


-3

"home"디스플레이 시스템에서 "host +"를 실행하는 것을 잊지 마십시오. 그리고 시스템에 ssh를 할 때 "ssh -x hostname"을 수행합니다.


14
X 서버의 모든 보안을 효과적으로 비활성화하는 경우 "xhost +"를 사용하지 않는 것이 좋습니다. ssh는 xauth를 사용하여 X11 인증을 자동으로 설정하기에 충분히 똑똑하므로 xhost를 사용할 필요가 없습니다.
Wichert Akkerman 2011

게시물이 아니라 댓글이어야합니다. 댓글을 달 수 없다고해서 나쁜 게시물을 작성해야한다는 의미는 아닙니다.
Elliot A.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.