“Không có biến X11 DISPLAY” - nghĩa là gì?


102

Tôi đang cố gắng cài đặt một ứng dụng Java trên máy Linux (Slackware) của mình.

Tôi đã nhận được lỗi sau và tôi không hiểu nó.

Bạn có thể tư vấn cho tôi cách tiếp cận vấn đề? Cảm ơn bạn.

Đây là những gì tôi nhận được: (Tôi thấy rằng một số biến X11 DISPLAY cần được đặt, nhưng tôi nên đặt giá trị nào cho nó và làm thế nào?)

~$ 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)

tôi đang gặp vấn đề tương tự, nó hoạt động hoàn hảo trên bảng điều khiển nhưng khi tôi sử dụng eclipse, nó ném ra cùng một ngoại lệ, tôi thậm chí còn đặt các dòng mã đó: Process proc_exporting = Runtime.getRuntime (). execute ("sudo export DISPLAY =: 0.0") ; vẫn không hoạt động
hb.Sara

3
Không có câu trả lời nào cung cấp thông tin cần thiết để giải quyết vấn đề này khi kết nối với bảng điều khiển từ xa qua puTTY. Bất kỳ câu trả lời nào đề cập đến SSH không thực sự giải thích cách làm cho nó hoạt động. Có ai biết về một câu hỏi giải quyết vấn đề này không?

Câu trả lời:


120

Nếu bạn đang ở trên màn hình chính, thì

export DISPLAY=:0.0

hoặc nếu bạn đang sử dụng csh hoặc tcsh

setenv DISPLAY :0.0

trước khi chạy ứng dụng của bạn.

Trên thực tế, tôi ngạc nhiên là nó không được đặt tự động. Bạn đang cố gắng khởi động ứng dụng này từ một thiết bị đầu cuối không có đồ họa? Nếu không, bạn đã sửa đổi tệp .profile, .login, .bashrc hoặc .cshrc mặc định chưa?

Lưu ý rằng việc đặt HIỂN THỊ thành: 0.0 giả sử rằng bạn đang ngồi ở màn hình chính, như tôi đã nói, hoặc ít nhất là màn hình chính được đăng nhập vào id người dùng của bạn. Nếu nó không được đăng nhập hoặc đó là một mạng lưới sử dụng khác, điều này sẽ không thành công.

Nếu bạn đến từ một máy khác và bạn đang ở màn hình chính của máy đó và nó đang chạy X, thì bạn có thể sử dụng "ssh -X hostname" để kết nối với máy chủ đó và ssh sẽ chuyển tiếp màn hình X trở lại . ssh cũng sẽ đảm bảo rằng biến môi trường DISPLAY được đặt chính xác (miễn là nó không bị nhầm lẫn trong các tệp chấm khác nhau mà tôi đã đề cập ở trên). Trong một phiên "ssh -X", biến môi trường DISPLAY sẽ có một giá trị như "localhost: 11.0", sẽ trỏ đến ổ cắm mà ssh đang chui vào hộp cục bộ của bạn.


Xin chào, cảm ơn bạn rất nhiều, người đầu tiên làm việc cho tôi. Có, tôi đang bắt đầu nó từ một thiết bị đầu cuối không có đồ họa.
user42155

Có vẻ như nó muốn tích hợp màn hình đồ họa. Hãy cẩn thận không chạy nó khi màn hình đồ họa không khả dụng hoặc nó thuộc về một số userid khác.
Paul Tomblin

3
lưu ý rằng điều này đã hoạt động vì bạn đang / đang ở trên bảng điều khiển. nếu bạn đang ở trên một thiết bị đầu cuối khác, bạn sẽ phải có một máy chủ X chạy trên thiết bị đầu cuối và sau đó đặt môi trường trỏ đến máy của bạn (ví dụ: export DISPLAY = 'hostname of pauls terminal': 0.0)
KevinDTimm

@kevindtimm, Điểm tốt - Tôi sẽ kết hợp thông tin của @ Mikeage về ssh -X vào câu trả lời của mình.
Paul Tomblin

1
Trong trường hợp bạn cần chạy một tác vụ tự động yêu cầu kết nối với máy chủ X, bạn có thể xem xvfb, nơi tạo ra một máy chủ X ảo. Điều này rất hữu ích cho một số thử nghiệm hàng loạt hoặc thử nghiệm đang chạy.
Wichert Akkerman

10

Bạn có đang chạy điều này từ bên trong môi trường X11 không? Bạn có thể sử dụng cửa sổ đầu cuối, nhưng nó phải nằm trong X (sau khi đăng nhập bằng đồ họa hoặc bằng cách chạy startx).

Nếu bạn đã ở trong môi trường đồ họa, hãy thử xuất DISPLAY =: 0 cho bash như shell (bash, sh, v.v.) hoặc setenv DISPLAY: 0 cho shell dựa trên C (csh, tcsh, v.v.)

Nếu bạn đã kết nối từ một máy khác qua SSH, bạn sử dụng tùy chọn -X để hiển thị giao diện đồ họa trên máy bạn đang ngồi (miễn là có một máy chủ X đang chạy ở đó (chẳng hạn như xming cho windows và Linux X tiêu chuẩn của bạn người phục vụ).


Xin chào, tôi đang chạy startx.
user42155

Đúng rồi, Slackware. Nó có còn trơ trọi như lần tôi sử dụng lần cuối 10 năm trước không?
Paul Tomblin

Nó vẫn khởi động theo mặc định trong runlevel 3. Tất nhiên, nếu bạn yêu cầu nó khởi động ở runlevel 5, bạn sẽ nhận được một menu đăng nhập KDM đẹp mắt giả sử bạn đã cài đặt KDE.
Adam Jaskiewicz

cảm ơn! trên CentOS và SSH (putty) được sử dụng: export DISPLAY=:0
jacktrades

8

bạn phải bật chuyển tiếp X11 trong PuTTy

để làm như vậy, hãy mở PuTTy, đi tới Kết nối => SSH => Đường hầm và đánh dấu chọn Bật chuyển tiếp X11

Cũng sudo đến máy chủ và xuất biến dưới đây IP là IP máy cục bộ của bạn

export DISPLAY=10.75.75.75:0.0

nhập mô tả hình ảnh ở đây


4

Một điều nữa có thể là vấn đề trong trường hợp tương tự như mô tả - X không được chuyển tiếp và $ DISPLAY không được đặt khi chương trình 'xauth' không được cài đặt ở phía điều khiển từ xa. Bạn có thể thấy nó tìm kiếm nó khi bạn chạy "ssh -Xv ip_address", và nếu không tìm thấy, nó không thành công, điều này sẽ không nhìn thấy trừ khi bạn bật chế độ tiết (IMO không thành công). Bạn thường có thể tìm thấy 'xauth' trong một gói có cùng tên.


3

Rất dễ dàng, Gặp phải vấn đề tương tự sau đó những gì tôi đã làm là tải xuống và cài đặt một ứng dụng sẽ giúp hiển thị sau đó sửa lỗi.

Tải xuống ứng dụng này xming:

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

Cài đặt, sau đó sử dụng cài đặt trên liên kết này:

http://www.geo.mtu.edu/geoschem/docs/putty_install.html hoặc làm theo các bước sau:

Cài đặt / cấu hình PuTTy và Xming

Khi PuTTy và Xming đã được tải xuống PC, hãy cài đặt theo hướng dẫn tương ứng của chúng.

Cấu hình Xming

Sau khi Xming được cài đặt, hãy chạy ứng dụng có tên 'XLaunch' và xác minh rằng các cài đặt như được hiển thị:

  • chọn Mục nhập mặc định trên cửa sổ Cài đặt hiển thị, nhấp vào tiếp theo
  • nhấp vào tiếp theo trên cửa sổ Loại phiên.
  • nhấp vào tiếp theo trên cửa sổ Thông số bổ sung (Thông báo hộp kiểm khay nhớ tạm thời là true)
  • lưu cấu hình và nhấp để hoàn tất.

Định cấu hình PuTTy

Sau khi cài đặt PuTTy, nhấp đúp vào biểu tượng PuTTy trên màn hình và cấu hình như hình:

Điều này cho thấy việc tạo một hồ sơ đăng nhập sau đó lưu nó.

  • Trên ssh -> X11, nhấp vào hộp kiểm để bật chuyển tiếp X11.
  • trên hộp văn bản vị trí hiển thị X, nhập localhost: 0.0

lưu hồ sơ sau đó kết nối từ xa với máy chủ để kiểm tra.

Chúc mừng !!!


Vui lòng bao gồm thông tin cần thiết từ các liên kết trong chính câu trả lời, bởi vì cuối cùng chúng có thể chết, khiến câu trả lời trở nên vô dụng.
plamut

2

Có rất nhiều cách để làm điều này. Tôi đã làm điều gì đó dưới đây thuận tiện cho tôi và luôn hoạt động tốt.

  1. Trên máy chủ từ xa của bạn, hãy đảm bảo cài đặt xorg-x11-xauth, xorg-x11-font-utils, xorg-x11-fonts.
  2. Chạy Máy chủ Xming trên máy tính cục bộ của bạn
  3. Trên putty, trước khi ssh đến máy chủ, hãy kích hoạt chuyển tiếp X11 và đặt vị trí hiển thị thành localhost: 0.0
  4. Trên máy chủ, tệp .Xauthority được tạo và thông báo rằng biến DISPLAY đã được đặt.

    danh sách $ xauth

    $ xauth thêm

Để kiểm tra nó, hãy gõ xclock hoặc xeyes

Lưu ý : Để chuyển đổi người dùng, hãy sao chép tệp .Xauthority vào thư mục chính của người dùng tương ứng và cũng xuất biến DISPLAY từ người dùng đó.


0

Tôi đã gặp vấn đề tương tự trong Ubuntu 14.04.01 khi cố cài đặt JDK 8 và Netbeans nếu tôi khởi chạy tập lệnh bên trong thiết bị đầu cuối Byobu (có thể với Màn hình cũng xảy ra tương tự).

Chỉ cần thoát Byobu và (trong thiết bị đầu cuối đồ họa) chạy tập lệnh.


0

Kiểm tra ban đầu.

1) Khi bạn đang xuất MÀN HÌNH sang máy khác, hãy đảm bảo bạn đã nhập lệnh xhost +trên máy đó. Lệnh này cho phép máy khác xuất MÀN HÌNH của chúng trên máy này. Có thể có những hạn chế về bảo mật, chỉ cần biết về nó. Cần kiểm tra ssh -X MachineIPsẽ không yêu cầu xhost +?

2) Đôi khi JCONSOLEsẽ không hiển thị tất cả quá trình của nó, vì quá trình JVM đó có thể chạy với người dùng khác và bạn đang xuất MÀN HÌNH với người dùng khác. vì vậy tốt hơn nên làm theoCD_DIR>sudo ./jconsole

3) Ở WAS (WEBSPHERE); jconsole sẽ không thể kết nối quy trình máy chủ java của nó, lúc đó chỉ cần truy cập liên kết, sau đó thử kết nối nó. Điều này đã làm việc cho tôi. Có thể trang này đang khởi tạo một số biến để cho phép jconsole kết nối với máy chủ đó.

Bảng điều khiển WAS> Máy chủ ứng dụng> server1> Định nghĩa quy trình> Máy ảo Java


Tôi đã gặp phải vấn đề tương tự với máy AIX (nơi chỉ có giao diện dòng lệnh, Không có giao diện người dùng HIỂN THỊ). Tôi đã giải quyết bằng cách cài đặt

NX Client dành cho Windows

Bước 1: Thông qua máy tính Windows đó, tôi đã kết nối với hộp unix nơi có sẵn bảng điều khiển GUI.
Bước 2: SSH vào hộp AIX từ hộp UNIX đó.
Bước 3: đặt DISPLAY như "export DISPLAY = UNIXMACHINE: NXClientPORTConnectedMestedOnTitle"
Bước 4: Bây giờ nếu chúng tôi khởi chạy bất kỳ chương trình nào yêu cầu DISPLAY; nó sẽ được khởi chạy trên hộp UNIX này.

VNC

Nếu bạn đã cài đặt VNC trên hộp UNIX có hiển thị; thì không bắt buộc phải có Windows và NX Client. Bước 1: Sử dụng VNC để kết nối với Unix box nơi có giao diện điều khiển GUI.
Bước 2: SSH vào hộp AIX từ hộp UNIX đó.
Bước 3: Thiết lập DISPLAY như "export DISPLAY = UNIXMACHINE: VNCPORT"
Bước 4: Bây giờ nếu chúng ta khởi chạy bất kỳ chương trình nào yêu cầu DISPLAY; nó sẽ được khởi chạy trên hộp UNIX này.

ELSE

Bước 1: SSH vào hộp AIX từ hộp UNIX đó.
Bước 2: Thiết lập DISPLAY như "export DISPLAY = UNIXMACHINE: VNCPORT"
Bước 3: Bây giờ nếu chúng ta khởi chạy bất kỳ chương trình nào yêu cầu DISPLAY; nó sẽ được khởi chạy trên hộp UNIX này.


0

Đối với những người đang cố gắng tải ứng dụng X Window hoạt động trên Windows từ Linux:

Điều làm việc hiệu quả với tôi là thiết lập máy chủ xming trên máy windows của tôi, đặt tùy chọn chuyển tiếp X11 bằng putty khi tôi kết nối với máy chủ linux và đặt địa chỉ ip windows của tôi với cổng hiển thị và sau đó là biến hiển thị với địa chỉ IP windows của tôi: 0.0

Đừng quên thêm địa chỉ IP máy chủ linux vào tệp X0.hosts để đảm bảo rằng máy chủ xming chấp nhận lưu lượng truy cập từ máy chủ đó. Tôi đã mất một thời gian để tìm ra điều đó.


-3

Đừng quên thực thi "host +" trên máy hiển thị "home" của bạn và khi bạn ssh đến máy, bạn đang thực hiện "ssh -x hostname"


14
Tôi thực sự khuyên bạn không nên sử dụng "xhost +" vì nếu vô hiệu hóa hiệu quả tất cả bảo mật trên máy chủ X của bạn. ssh đủ thông minh để sử dụng xauth để thiết lập xác thực X11 tự động, vì vậy không cần sử dụng xhost.
Wichert Akkerman

Đây nên là một bình luận, không phải là một bài đăng. Chỉ vì bạn không thể bình luận không có nghĩa là bạn nên tạo một bài viết xấu.
Elliot A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.