"कोई X11 प्रदर्शन चर" - इसका क्या मतलब है?


102

मैं अपने लिनक्स मशीन (स्लैकवेयर) पर जावा एप्लिकेशन इंस्टॉल करने का प्रयास कर रहा हूं।

मुझे निम्नलिखित त्रुटि मिली है, और मुझे यह समझ में नहीं आया है।

क्या आप मुझे सलाह दे सकते हैं कि समस्या का सामना कैसे करें? धन्यवाद।

यहाँ मुझे क्या मिलेगा: (मैं देख रहा हूँ कि कुछ 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)

मुझे एक ही समस्या है, यह कंसोल पर पूरी तरह से काम करता है, लेकिन जब मैं ग्रहण का उपयोग करता हूं तो यह एक ही अपवाद फेंकता है यहां तक ​​कि मैंने उस कोड लाइनों को भी डाल दिया: प्रक्रिया proc_exporting = Runtime.getRuntime ()। exec ("sudo export DISPLAY =: 0.0") ; अभी भी काम नहीं करता है
hb.Sara

3
उत्तर में से कोई भी इस समस्या को हल करने के लिए आवश्यक जानकारी नहीं देता है जब puTTY के माध्यम से दूरस्थ रूप से कंसोल से कनेक्ट होता है। SSH को संबोधित करने वाला कोई भी उत्तर वास्तव में यह नहीं समझाता है कि यह कैसे काम करता है। किसी को भी एक सवाल का पता है कि यह पता है?

जवाबों:


120

यदि आप मुख्य प्रदर्शन पर हैं, तो

export DISPLAY=:0.0

या यदि आप csh या tsh का उपयोग कर रहे हैं

setenv DISPLAY :0.0

अपना ऐप चलाने से पहले।

वास्तव में, मुझे आश्चर्य है कि यह स्वचालित रूप से सेट नहीं है। क्या आप इस एप्लिकेशन को गैर-ग्राफिक टर्मिनल से शुरू करने की कोशिश कर रहे हैं? यदि नहीं, तो क्या आपने डिफ़ॉल्ट .profile, .login, .bashrc या .cshrc को संशोधित किया है?

ध्यान दें कि प्रदर्शन की स्थापना: 0.0 पूर्व-मुख्य यह है कि आप मुख्य प्रदर्शन पर बैठे हैं, जैसा कि मैंने कहा, या कम से कम मुख्य प्रदर्शन आपके उपयोगकर्ता आईडी पर लॉग ऑन है। यदि यह लॉग ऑन नहीं है, या यह एक अलग उपयोगकर्ता नाम है, तो यह विफल हो जाएगा।

यदि आप किसी अन्य मशीन से आ रहे हैं, और आप उस मशीन के मुख्य डिस्प्ले पर हैं और यह X चल रहा है, तो आप उस होस्ट से कनेक्ट करने के लिए "ssh -X hostname" का उपयोग कर सकते हैं, और ssh X डिस्प्ले को आगे भेज देगा । ssh यह भी सुनिश्चित करेगा कि DISPLAY पर्यावरण चर सही तरीके से सेट किया गया है (बशर्ते कि यह मेरे द्वारा उल्लिखित विभिन्न डॉट फाइलों में गड़बड़ न हो)। "Ssh -X" सत्र में, DISPLAY वातावरण चर का "लोकलहोस्ट: 11.0" जैसा मान होगा, जो सॉकेट को इंगित करेगा जो ssh आपके स्थानीय बॉक्स में सुरंग बना रहा है।


हाय, बहुत-बहुत धन्यवाद, पहले वाले ने मेरे लिए काम किया। हां, मैं इसे नॉन-ग्राफिक टर्मिनल से शुरू कर रहा हूं।
user42155

ऐसा लगता है कि यह ग्राफिक्स डिस्प्ले को एक्सेस करना चाहता है, हालांकि। जब ग्राफिक्स डिस्प्ले उपलब्ध नहीं है, तो इसे चलाने के लिए सावधान रहें, या यह किसी अन्य उपयोगकर्ता के अंतर्गत आता है।
पॉल टॉम्बलिन

3
ध्यान दें कि यह काम किया है क्योंकि आप / कंसोल पर हैं। यदि आप किसी अन्य टर्मिनल पर थे, तो आपके पास टर्मिनल पर चलने वाला एक एक्स सर्वर होना चाहिए और फिर अपनी मशीन को इंगित करने के लिए वातावरण सेट करें (एक्सपोर्ट DISPLAY = 'होस्टल ऑफ़ पल्सेस टर्मिनल': उदाहरण के लिए 0.0)
केविनडिम

@kevindtimm, अच्छी बात - मैं अपने जवाब में ssh -X के बारे में @ माइकाज़ की जानकारी शामिल करने जा रहा हूँ।
पॉल टॉम्बलिन

1
मामले में आपको एक स्वचालित कार्य चलाने की आवश्यकता होती है, जिसे आपको एक एक्स सर्वर से कनेक्ट करने की आवश्यकता होती है जिसे आप xvfb पर देख सकते हैं, जो एक वर्चुअल एक्स सर्वर बनाता है। यह कुछ बैच परीक्षणों या चलने वाले परीक्षणों के लिए बहुत उपयोगी है।
विचर्ट अकर्मन

10

क्या आप इसे X11 वातावरण के भीतर से चला रहे हैं? आप एक टर्मिनल विंडो का उपयोग कर सकते हैं, लेकिन इसे एक्स के भीतर होना चाहिए (या तो ग्राफिकल लॉगिन के बाद, या स्टार्टिंग चलाकर)।

यदि आप पहले से ही एक ग्राफिकल वातावरण में हैं, तो DISPLAY =: 0 को bash जैसे गोले (bash, sh, etc) या setenv DISPLAY: 0 के लिए C शेल आधारित गोले (csh, tcsh, आदि) के लिए निर्यात करें।

यदि आप SSH के माध्यम से किसी अन्य मशीन से जुड़े हैं, तो आप जिस मशीन पर बैठे हैं, उस पर चित्रमय इंटरफ़ेस प्रदर्शित करने के लिए -X विकल्प का उपयोग करते हैं (बशर्ते वहां एक एक्स सर्वर चल रहा हो (जैसे कि विंडोज़ के लिए xming, और आपका मानक लिनक्स X) सर्वर)।


नमस्ते, मैं startx चला रहा हूँ।
user42155

ओह राइट, स्लैकवेयर। क्या यह अभी भी उतने ही नंगे हैं जितना कि मैंने 10 साल पहले इसका इस्तेमाल किया था?
पॉल टॉम्बलिन

यह अभी भी रनलेवल 3 में डिफ़ॉल्ट रूप से शुरू होता है। बेशक, यदि आप इसे रनवे 5 में शुरू करने के लिए कहते हैं, तो आपको केडीई स्थापित करने के लिए एक सुंदर केडीएम लॉगिन मेनू मिलेगा।
एडम जस्कविज़

धन्यवाद! CentOS और SSH (पोटीन) पर इस्तेमाल किया: export DISPLAY=:0
jacktrades

8

आपको पुट्टी में X11 अग्रेषण सक्षम करना होगा

ऐसा करने के लिए PuTTy खोलें, कनेक्शन => SSH => सुरंगों पर जाएँ और X11 फ़ॉरवर्डिंग सक्षम करें पर निशान लगाएँ

सर्वर के लिए भी 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 पीसी में डाउनलोड हो जाने के बाद, उनके संबंधित निर्देशों के अनुसार इंस्टॉल करें।

Xming को कॉन्फ़िगर करना

एक बार Xming स्थापित हो जाने के बाद, 'XLaunch' नामक एप्लिकेशन को चलाएं और सत्यापित करें कि सेटिंग्स निम्नानुसार हैं:

  • प्रदर्शन सेटिंग्स विंडो पर डिफ़ॉल्ट प्रविष्टियों का चयन करें, अगले पर क्लिक करें
  • सत्र प्रकार विंडो पर अगला क्लिक करें।
  • अतिरिक्त पैरामीटर विंडो पर अगला क्लिक करें (नोटिस क्लिपबोर्ड चेकबॉक्स सही है)
  • कॉन्फ़िगरेशन सहेजें और समाप्त करने के लिए क्लिक करें।

पुट्टी को कॉन्फ़िगर करना

PuTTy स्थापित करने के बाद, डेस्कटॉप पर PuTTy आइकन पर डबल-क्लिक करें और दिखाए अनुसार कॉन्फ़िगर करें:

यह एक लॉगिन प्रोफ़ाइल बनाते हुए दिखाता है फिर इसे सहेजता है।

  • Ssh -> X11 पर, X11 अग्रेषण सक्षम करने के लिए चेकबॉक्स पर क्लिक करें।
  • एक्स डिस्प्ले लोकेशन टेक्स्टबॉक्स पर, लोकलहोस्ट टाइप करें: 0.0

प्रोफ़ाइल सहेजें तो परीक्षण के लिए सर्वर से दूरस्थ रूप से कनेक्ट करें।

चीयर्स !!!


कृपया उत्तर में दिए गए लिंक से आवश्यक जानकारी शामिल करें, क्योंकि वे अंततः मृत हो सकते हैं, उत्तर को बेकार में प्रस्तुत कर सकते हैं।

2

इसे करने के कई तरीके हैं। मैंने नीचे कुछ सुविधाजनक किया और हमेशा ठीक काम किया।

  1. अपने दूरस्थ सर्वर पर, xorg-x11-xauth, xorg-x11-font-utils, xorg-x11- फोंट स्थापित करना सुनिश्चित करें।
  2. आप स्थानीय डेस्कटॉप पर Xming सर्वर चलाएँ
  3. पोटीन पर, सर्वर पर ssh से पहले, X11 को अग्रेषित करने में सक्षम करें और प्रदर्शन स्थान को लोकलहोस्ट पर सेट करें: 0.0
  4. सर्वर पर, .Xauthority फ़ाइल जनरेट की जाती है और ध्यान दें कि DISPLAY चर पहले से सेट है।

    $ xauth सूची

    $ xauth जोड़

इसका परीक्षण करने के लिए, xclock या xeyes टाइप करें

नोट : उपयोगकर्ता को बदलने के लिए, संबंधित उपयोगकर्ता की होम निर्देशिका में .Xauthority फ़ाइल की प्रतिलिपि बनाएँ और उस उपयोगकर्ता के लिए DISPLAY चर भी निर्यात करें।


0

उबंटू 14.04.01 में मेरे पास एक ही मुद्दा था, जब मैंने बीडीओ टर्मिनल के अंदर स्क्रिप्ट लॉन्च की तो मैंने जेडीके 8 और नेटबिन को स्थापित करने की कोशिश की (शायद स्क्रीन ऐसा ही होता है)।

बस बायोबू से बाहर निकलें और (एक ग्राफिकल टर्मिनल में) स्क्रिप्ट चलाएँ।


0

प्रारंभिक जाँच।

1) जब आप अन्य मशीन को निर्यात कर रहे हैं, तो सुनिश्चित करें कि आपने xhost +उस मशीन पर कमांड दर्ज किया है । यह आदेश अन्य मशीन को इस मशीन पर अपने प्रदर्शन का निर्यात करने की अनुमति देता है। सुरक्षा संबंधी बाधाएँ हो सकती हैं, बस इसके बारे में पता है। जाँच करने की ssh -X MachineIPआवश्यकता नहीं होगी xhost +?

2) कुछ समय JCONSOLEअपनी सारी प्रक्रिया को नहीं दिखाएगा, क्योंकि उन JVM प्रक्रिया अलग-अलग उपयोगकर्ता के साथ चल सकती है और आप किसी अन्य उपयोगकर्ता के साथ प्रदर्शन का निर्यात कर रहे हैं। इतना बेहतर पालनCD_DIR>sudo ./jconsole

3) WAS (WEBSPHERE) में; jconsole अपनी जावा सर्वर प्रक्रिया को कनेक्ट करने में सक्षम नहीं होगा, उस समय लिंक पर जाएं, फिर इसे कनेक्ट करने का प्रयास करें। इसने मेरे लिए काम किया। हो सकता है कि यह पृष्ठ उस सर्वर से जुड़ने के लिए जोंकॉस को सक्षम करने के लिए कुछ चर को आरंभ कर रहा हो।

WAS कंसोल> एप्लिकेशन सर्वर> सर्वर 1> प्रक्रिया परिभाषा> जावा वर्चुअल मशीन


मुझे AIX के साथ एक ही समस्या का सामना करना पड़ा है (जहां कमांड लाइन इंटरफ़ेस केवल उपलब्ध है, कोई प्रदर्शन यूआई नहीं है) मशीन। मैंने स्थापित करके हल किया

विंडोज के लिए NX क्लाइंट

चरण 1: उस विंडोज मशीन के माध्यम से, मैं यूनिक्स बॉक्स के साथ जुड़ा जहां जीयूआई कंसोल उपलब्ध है।
चरण 2: SSH AIX बॉक्स से उस UNIX बॉक्स में।
चरण 3: "DISPLAY = UNIXMACHINE" निर्यात की तरह DISPLAY सेट करें: NXClientPORTConnectedMentionedOnTitle "
चरण 4: अब अगर हम किसी भी प्रोग्राम को लॉन्च करते हैं जिसके लिए DISPLAY की आवश्यकता होती है; इसे इस UNIX बॉक्स पर लॉन्च किया जाएगा।

VNC

यदि आपने UNIX बॉक्स पर VNC स्थापित किया है जहाँ प्रदर्शन उपलब्ध है; तब Windows और NX क्लाइंट की आवश्यकता नहीं है। चरण 1: यूएनआई बॉक्स के साथ जुड़ने के लिए वीएनसी का उपयोग करें जहां जीयूआई कंसोल उपलब्ध है।
चरण 2: SSH AIX बॉक्स से उस UNIX बॉक्स में।
चरण 3: DISPLAY सेट करें जैसे "निर्यात DISPLAY = UNIXMACHINE: VNCPORT"
चरण 4: अब अगर हम किसी भी प्रोग्राम को लॉन्च करते हैं जिसमें DISPLAY की आवश्यकता होती है; इसे इस UNIX बॉक्स पर लॉन्च किया जाएगा।

अन्य

चरण 1: उस UNIX बॉक्स से AIX बॉक्स में SSH।
चरण 2: DISPLAY सेट करें जैसे "Export DISPLAY = UNIXMACHINE: VNCPORT"
चरण 3: अब यदि हम किसी भी प्रोग्राम को लॉन्च करते हैं, जिसमें DISPLAY की आवश्यकता होती है; इसे इस UNIX बॉक्स पर लॉन्च किया जाएगा।


0

उन लोगों के लिए जो लिनक्स से विंडोज से काम कर रहे एक एक्स विंडो एप्लिकेशन प्राप्त करने की कोशिश कर रहे हैं:

मेरे लिए जो काम किया गया था, उसने मेरी विंडोज़ मशीन पर xming सर्वर को सेटअप करने के लिए, पोटीन में X11 फ़ॉरवर्डिंग विकल्प सेट किया, जब मैं लिनक्स होस्ट से कनेक्ट करता हूं और डिस्प्ले पोर्ट के साथ अपने विंडोज़ आईपी पते में डाल देता हूं और फिर मेरी विंडोज़ आईपी पते के साथ डिस्प्ले वेरिएबल: 0.0

यह सुनिश्चित करने के लिए कि Xming सर्वर उस होस्ट से ट्रैफ़िक स्वीकार नहीं करता है, X0.hosts फ़ाइल में लिनक्स होस्ट आईपी एड्रेस जोड़ना न भूलें। मुझे यह पता लगाने में थोड़ा समय लगा।


-3

अपने "होम" डिस्प्ले मशीन पर "होस्ट +" निष्पादित करने के लिए मत भूलना, और जब आप मशीन पर ssh करते हैं तो आप "ssh-x hostname" कर रहे होते हैं


14
मैं दृढ़ता से "xhost +" का उपयोग नहीं करने की सलाह दूंगा क्योंकि अगर आपके एक्स सर्वर पर सभी सुरक्षा प्रभावी रूप से अक्षम है। ssh xauth का उपयोग करने के लिए X11 प्रमाणीकरण को स्वचालित रूप से सेटअप करने के लिए पर्याप्त स्मार्ट है, इसलिए xhost का उपयोग करने की कोई आवश्यकता नहीं होनी चाहिए।
विचर्ट अकर्मन

यह टिप्पणी होनी चाहिए, पोस्ट नहीं। सिर्फ इसलिए कि आप टिप्पणी नहीं कर सकते इसका मतलब यह नहीं है कि आपको एक खराब पोस्ट करना चाहिए।
इलियट ए।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.