2009-03-19 22 views
71

Tôi đang cố gắng cài đặt một chương trình (một ứng dụng Java) trên máy Linux của mình (Tôi đang sử dụng Slackware). 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 đề không? Tôi không chắc liệu đây là một loại câu hỏi tôi có thể hỏi ở đây, bởi vì nó không chính xác là một câu hỏi lập trình, nhưng tôi sẽ đánh giá cao nếu bạn trả lời. Cảm ơn bạn."Không có biến X11 DISPLAY" - có nghĩa là gì?

Dưới đâ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 phải được thiết lập, nhưng những gì giá trị tôi nên 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) 
+0

Tôi đang gặp vấn đề tương tự, nó hoạt động bình thường trên bảng điều khiển nhưng khi tôi sử dụng nhật thực nó ném 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(). Exec ("sudo export DISPLAY =: 0,0 "); vẫn không hoạt động –

+1

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àn điều khiển từ xa thông qua puTTY. Bất kỳ câu trả lời nào giải quyết SSH không thực sự giải thích cách làm cho nó hoạt động. Có ai biết câu hỏi giải quyết vấn đề này không? –

Trả lời

88

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

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.

Thực ra, tôi ngạc nhiên rằng 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 đồ họa? Nếu không, bạn đã sửa đổi mặc định .profile, .login, .bashrc hoặc .cshrc?

Lưu ý rằng việc đặt DISPLAY thành: 0.0 giả sử bạn đang ngồi ở màn hình chính, như tôi đã nói, hoặc ít nhất 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 nó là một userid khác, điều này sẽ thất bại.

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à đang chạy X, thì bạn có thể sử dụng "tên máy chủ ssh -X" để kết nối với máy chủ đó và ssh sẽ chuyển tiếp X hiển thị 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 (cung cấp nó không bị sai lầm trong các tệp chấm khác nhau mà tôi đã đề cập ở trên). Trong phiên "ssh -X", biến môi trường DISPLAY sẽ có một giá trị như "localhost: 11.0", sẽ trỏ đến socket mà ssh đang tunneling đến hộp nội bộ của bạn.

+0

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

+0

Có vẻ như nó muốn truy cậ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 có sẵn, hoặc nó thuộc về một số userid khác. –

+3

lưu ý rằng điều này làm việc vì bạn đang ở trên bàn đ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 đó thiết lập môi trường để trỏ đến máy của bạn (xuất DISPLAY = 'tên máy của thiết bị đầu cuối pauls': 0.0 chẳng hạn) – KevinDTimm

9

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 một cửa sổ đầu cuối, nhưng nó phải nằm trong X (hoặc sau khi đăng nhập đồ 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ư vỏ (bash, sh, v.v.) hoặc setenv DISPLAY: 0 cho vỏ C shell (csh, tcsh, v.v.)

Nếu bạn đã kết nối 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à tiêu chuẩn của bạn) Máy chủ Linux X)

+0

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

+0

Ồ đúng, Slackware. Nó vẫn còn là xương sống như nó đã được khi tôi sử dụng nó 10 năm trước? –

+0

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ó bắt đầu trong runlevel 5, bạn sẽ nhận được một menu đăng nhập KDM khá giả sử bạn đã cài đặt KDE. –

-3

Đừng quên thực thi "máy chủ +" trên máy hiển thị "trang chủ" của bạn và khi bạn ssh vào máy bạn đang làm "ssh -x tên máy chủ"

-Tee

+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 là đủ 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 phải sử dụng xhost. –

+0

Đây phải là nhận xét chứ không phải là bài đăng. Chỉ vì bạn không thể bình luận không có nghĩa là bạn nên làm một bài xấu. –

0

Tôi đã gặp vấn đề tương tự trong Ubuntu 14.04.01 khi tôi cố gắng 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 giống nhau).

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

0

Kiểm tra ban đầu.

1) Khi bạn xuất DISPLAY sang máy khác, đả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 DISPLAY của họ 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 MachineIP sẽ không yêu cầu xhost +?

2) Một số lần JCONSOLE sẽ không hiển thị tất cả quy trình, vì các quá trình JVM này có thể chạy với người dùng khác và bạn đang xuất DISPLAY với người dùng khác. tốt hơn theo sau CD_DIR>sudo ./jconsole

3) Ở WAS (WEBSPHERE); jconsole sẽ không thể kết nối quá trình máy chủ java của nó, thời gian đó chỉ cần đi đến liên kết, sau đó thử kết nối nó. Điều này làm việc cho tôi. Có thể là 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ủ đó.

WS console> các máy chủ ứng dụng> server1> định nghĩa Process> Java Virtual Machine


tôi đã phải đối mặt với vấn đề tương tự với AIX (nơi giao diện dòng lệnh chỉ có sẵn, Không có DISPLAY UI) máy. Tôi giải quyết bằng cách cài đặt

NX Khách hàng dành cho Windows

Bước 1: Thông qua đó máy tính Windows, tôi kết nối với unix hộp nơi GUI giao diện điều khiển có sẵn.
Bước 2: SSH vào hộp AIX từ hộp UNIX đó.
Bước 3: đặt DISPLAY như "xuất DISPLAY = UNIXMACHINE: NXClientPORTConnectedMentionedOnTitle"
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 nơi trưng bày đã có sẵn; sau đó Windows và NX Client là không cần thiết. Bước 1: Sử dụng VNC để kết nối với hộp Unix nơi giao diện điều khiển GUI có sẵn.
Bước 2: SSH vào hộp AIX từ hộp UNIX đó.
Bước 3: đặt DISPLAY như "xuất DISPLAY = UNIXMACHINE: VNCPORT"
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.

ELSE

Bước 1: SSH vào hộp AIX từ đó UNIX hộp.
Bước 2: đặt DISPLAY như "xuất DISPLAY = UNIXMACHINE: VNCPORT"
Bước 3: 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.

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 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, không thành công, sẽ không thấy trừ khi bạn bật chế độ tiết (mộ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.

1

Rất dễ dàng, Đã có 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ác thiết lập vào 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 này:

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

Khi PuTTY và Xming đã được tải về máy tính, cài đặt theo hướng dẫn tương ứng của họ.

Cấu hình Xming

Khi Xming được cài đặt, chạy các ứng dụng được gọi là 'XLaunch' và xác minh rằng các thiết lập được như:

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

Cấu hình PuTTY

Sau khi cài đặt PuTTY, kích đúp vào biểu tượng PuTTY trên desktop và cấu hình như:

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

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

tiết kiệm hồ sơ sau đó kết nối từ xa đến máy chủ để kiểm tra.

Chúc mừng !!!

+0

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

4

bạn phải kích hoạt X11 chuyển tiếp trong bạn PuTTY

để làm như vậy mở PuTTY, đi đến kết nối => SSH => Tunnels và kiểm tra đánh dấu Enable X11 chuyển tiếp

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

export DISPLAY=10.75.75.75:0.0 

enter image description here

0

Đối với những người đang cố gắng để có được một ứng dụng X Window làm việc kể từ Windows từ Linux:

gì làm việc cho tôi là để thiết lập Xming máy chủ trên máy tính của cửa sổ của tôi, thiết lập tùy chọn chuyển tiếp X11 trong putty khi tôi kết nối với máy chủ linux và đặt trong cửa sổ địa chỉ ip của tôi với cổng hiển thị và sau đó biến hiển thị với địa chỉ IP của cửa sổ của tôi: 0.0

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