DISPLAY वैरिएबल के मान के रूप में Java, 'स्थानीयहोस्ट: 10.0' का उपयोग करके X11 विंडो सर्वर से कनेक्ट नहीं हो सकता


93

मेरे पास जावा का उपयोग करने वाली एक स्क्रिप्ट है जो पोर्ट 11 में X11 को लोकलहोस्ट पर प्रदर्शित करने के लिए कनेक्ट करने के लिए है

लेकिन मुझे हमेशा यह त्रुटि मिलती है

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"

मैं इसे कैसे ठीक कर सकता हूं मैंने सोचा कि एक्स सर्वर नहीं चल रहा है, इसलिए मैंने कोशिश की startxकि यह उस बंदरगाह पर अपना रनिंग कहे

मेरा सिस्टम Ubuntu सर्वर संस्करण 10.04 है

जवाबों:


35

इस कमांड ने मुझे समस्या को हल करने में मदद की:

export DISPLAY=:0

40
unset DISPLAYमेरी मदद की ( export DISPLAY=:0मैं त्रुटि के साथCan't connect to X11 window server using ':0'
beluchin

1
आपने इसे कहाँ रखा था
Spektakulatius

1
अच्छी तरह से कुछ समय - यह लिनक्स पर काम नहीं करेगा तो एक्सपीएफ को एप्टीट्यूड के साथ इंस्टॉल करना और इसे किसी भी स्क्रीन पर चलाना जैसे: Xvfb: 1 और फिर बिल्ड फेज में वेरिएबल सेट करें - DISPLAY =: 1 -> यह पूरी तरह से काम करता है।
पंकज कुमार कटियार


56

आपको -Djava.awt.headless=trueस्टार्टअप समय पर पैरामीटर निर्दिष्ट करने की आवश्यकता है ।


बहुत बहुत धन्यवाद, लेकिन मुझे यह कहाँ निर्दिष्ट करना है?
एल्टरटू

1
थ्रेड में मुख्य "java.awt.He adlessException in java.awt.GraphicsEnvironment.checkHeadless (GraphicsEnvironment.java:1 73)
Elteroooo

क्या आप एक सुरक्षा प्रबंधक चला रहे हैं? यदि हां, तो आपको शायद अनुमति देनी होगी।
माइकल-ओ

1
धन्यवाद समस्या यह थी कि X सर्वर दूसरे पोर्ट में चल रहा है
Elteroooo

1
पूछने वाले का कार्यक्रम करना चाहता है ij.io.Opener.openJpegOrGif, हम अनुमान लगा सकते हैं कि शायद एक जीयूआई की आवश्यकता है। इसलिए हेडलेस के परिणामस्वरूप एक और त्रुटि होगी java.awt.HeadlessException:।
निकोलस राउल

40

प्रदर्शन चर निकालें

unset DISPLAY

यह ज्यादातर मामलों में मदद करता है (जैसे एप्लिकेशन सर्वर या अन्य जावा आधारित टूल शुरू करना) और सभी कमांड लाइनों को संशोधित करने से बचा जाता है।

यह समर्पित ऐप-सर्वर / टूल उपयोगकर्ता के लिए .bash_profile में जोड़ने के लिए भी आरामदायक हो सकता है।


1
इसने मेरी बिल्कुल मदद नहीं की। मुझे यह मिला: AWT का उपयोग कर X11 विंडो सर्वर से कनेक्ट नहीं किया जा सकता ...
पंकज कुमार कटियार

अगर आपका ऐप awt का उपयोग करता है तो आपको सही तरीके से DISPLAY सेट करना होगा। यह उन ऐप्स के लिए है जो awt का उपयोग नहीं कर रहे हैं।
बेबो

जब इस के साथ खेल रहे हों, तो सुनिश्चित करें कि आप अपने bashfile में unset कमांड जोड़ने के बाद mobaXterm को पुनः आरंभ करें। चूंकि डिस्प्ले चर पहले से सेट किया जाएगा और बस अपनी बैश फ़ाइल को चलाने से वह नहीं बदलेगी।
mrk

15

मुझे लगता है कि आप sudo मोड में काम कर रहे हैं। उपयोगकर्ता मोड के लिए चेकआउट करें और फिर से प्रयास करें


4
यह मेरी समस्या भी थी। लगता है, हालांकि जड़ के रूप में चलाने में सक्षम नहीं होने के लिए अजीब है, है ना?
जावजवाव

मैं sudo का उपयोग क्यों नहीं कर सकता?
एंड्रिया बोर्गोगेली एवेडुती

@ जजवजवाव युप
हर्ष वी पिल्लई

9

यदि कोई सीआई (जेनकींस, ..) पर मावेन-अचूक-प्लगइन के माध्यम से स्वचालित इकाई परीक्षणों को चलाने की कोशिश कर रहा है, और उपर्युक्त त्रुटि प्राप्त कर रहा है, तो अपने अचूक प्लगइन विन्यास को अद्यतन करना सुनिश्चित करें:

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

1
यह कैसे करना है और यह भी कि इसमें संपत्ति का मूल्य कैसे निर्धारित किया जाए।
शोभित शर्मा

7

यह इसे ठीक कर देगा:

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

मेरा ठीक नहीं किया
एलेक्स Shnyrov

1
इसने मेरे लिए काम किया। धन्यवाद। मुझे त्रुटि मिल रही थी क्योंकि मैं पोई का उपयोग कर रहा हूं।
dev4life

6

के लिए मुझे के रूप में में लॉग इन करने -Y -X के बजाय काम किया।

यदि आपको नीचे दिखाया गया है, तो आपको बिना बताए X11 मिल गया है, तो इसके बजाय कोशिश करें- (अगर आपको मेजबान पर भरोसा है)

चेतावनी : अविश्वसनीय X11 अग्रेषण सेटअप विफल: xauth कुंजी डेटा उत्पन्न नहीं हुआ


4

रास्पबेरी पी 2 पर ग्लासफिश को स्थापित करने के निरर्थक प्रयास के कई दिनों के बाद, बिना सिर वाले फेडोरा 22 के साथ नीचे, मेरे लिए एक खाई के बिना काम किया

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

यहाँ से मेरी मदद मिली


3

पहला: XQuartz शुरू करें

दूसरा: ssh -X user @ ip_address

...: अपनी प्रक्रिया शुरू करें

यदि आप ssh करते हैं और फिर XQuartz शुरू करते हैं तो आपको वह त्रुटि मिलेगी


3

इससे मेरी समस्या ठीक हो गई

xhost +

लेकिन ध्यान रखें कि xhost +प्रमाणीकरण को पूरी तरह से निष्क्रिय कर देता है और सभी को आपकी स्क्रीन पर सभी एप्लिकेशन तक पहुंचने देता है।

xhost +si:localuser:root उचित प्रमाणीकरण के साथ समान काम करने लगता है।


2

मैं Xming का उपयोग कर रहा था और मुझे ऐसी ही त्रुटि मिली। समस्या को ठीक करने के लिए निम्नलिखित कदम उठाए गए:

  1. Xming लॉन्च में बॉक्स नो एक्सेस कंट्रोल की जाँच करें।
  2. पोटीन में निम्नलिखित कमांड भागा: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

XXX.XXX.XXX.XXअपने आईपी पते के साथ बदलें ।


मैं एक ही विन्यास में हूँ, हालांकि यह काम नहीं किया। मुझे X0.hosts फ़ाइल में IP निष्पादन X11 को जोड़ने की आवश्यकता है
Christophe Moine

2

इसका उपयोग पहले बिल्ड बिल्ड जेनकींस के चरण में करें यदि उपयोग या सेट / आदि / प्रोफाइल में:

unset DISPLAY
export DISPLAY=:0

फिर इस संपत्ति को या तो जावा कोड में या मावेन का उपयोग करके सेट करें: -डजाव.ट.हेडलेस = गलत


2

हल किया। मैं बस लॉगआउट करता हूं और xorg के साथ लॉगिन करता हूं!


1
निर्यात प्रदर्शन =: 0 या निर्यात प्रदर्शन =: 1 मेरे लिए काम नहीं किया। लॉग आउट और मेरे लिए इसे हल करने में लॉगिंग।
ऑप्टिमस

1

माइकल-ओ ने समस्या को हल करने के लिए उपयोगी दृष्टिकोण दिया। इसे हल करने का एक और तरीका है, पुट्टी कंसोल के साथ सर्वर शुरू करना।


क्या आप थोड़ा और समझा सकते हैं कि यह कैसे काम करेगा? (मैंने कभी पोटीन का इस्तेमाल नहीं किया है)
mrk

1

मेरे मामले में मेरी मशीन में कोई जगह नहीं बची थी और मैंने उसी मुद्दे का सामना किया। कुछ समय के लिए यह अंतरिक्ष मुद्दा हो सकता है। अपने लिनक्स / यूनिक्स वातावरण में स्थान की जाँच करें और सुनिश्चित करें कि आपकी मशीन में पर्याप्त स्थान है।


1

यदि आप सु का उपयोग करके प्रदर्शन निर्यात करने की कोशिश कर रहे हैं और यह अभी भी काम नहीं करता है। इसी से मेरा काम बना है। Sudo उपयोगकर्ताओं के लिए X11 अग्रेषित करने का प्रयास करें।

Ssh के साथ -X विकल्प का उपयोग कर रिमोट होस्ट कनेक्ट करें।

# ssh -X root@remote-host

अब वर्तमान उपयोगकर्ता के लिए निर्धारित कोकी को सूचीबद्ध करें।

# xauth list $DISPLAY
    node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
    localhost:10.0

Sudo का उपयोग करके किसी अन्य उपयोगकर्ता खाते में स्विच करें। Sudo उपयोगकर्ता के ऊपर कमांड आउटपुट से कुकी जोड़ें।

# sudo su - [user]
# xauth add node01.thegeekdiary.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa

Sudo उपयोगकर्ता के लिए चरण 2 से फिर से प्रदर्शन निर्यात करें। यदि x क्लाइंट अनुप्रयोग अपेक्षित रूप से काम कर रहे हैं, तो सत्यापित करने के लिए कमांड xclock की कोशिश करें।

# export DISPLAY=localhost:10.0

स्रोत: https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-use-sudo/


1

जाँचें कि क्या $ DISPLAY चर निर्धारित कमांड के साथ सेट है या नहीं:

$ $ गूंज

यदि प्रदर्शन चर सेट नहीं है, तो सेट करने के लिए नीचे कमांड चलाएँ, (यदि यह सेट है, तो आप अपने सत्र के लिए एक से नीचे हो सकते हैं)

निर्यात प्रदर्शन =: 0.0

पोटीन में भी एक्स डिस्प्ले लोकेशन है: 0.0


0

मुझे काम करने का एकमात्र तरीका स्क्रिप्ट को टेम्प्लेट के साथ चलाना था। उदा। sudo ./glassfish-3.1.2.2-unix.sh -s टेम्पलेट

यह ग्लासफिश को साइलेंट मोड में स्थापित करता है। http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html


0

जब मैं रिमोट पर jconsole कमांड चलाता हूं तो मैं आपके साथ एक ही त्रुटि में चलता हूं। मैं जंकसोल पर एक पैरामीटर को संशोधित करना चाहता हूं जो एक दूरस्थ लिनक्स होस्ट पर चलता है, मैं होस्ट को सिक्योरसीआरटी का उपयोग कर लॉगिन कर सकता हूं, टर्मिनल इस त्रुटि की जानकारी फेंक देता है। सौभाग्य से, जब पोटीन का उपयोग करते हैं, तो यह ठीक है। अजीब....


0

यदि आप हडसन में इस त्रुटि को देखते हैं, तो अपने होम निर्देशिका से .java निर्देशिका को निकालने का प्रयास करें, यह आपके लिए काम कर सकती है।


0

यदि आप ssh द्वारा लॉग इन करते समय एक दूरस्थ सर्वर पर आवेदन शुरू करते हैं तो दूसरा तरीका यह होगा कि आप ssh को -xपैरामीटर से शुरू करें या ForwardX11 noअपने में जोड़ें /etc/ssh/ssh_config। इस स्थिति में ssh वातावरण चर DISPLAY नहीं बनाएगा।


0

यदि आप जेनकिन्स से अपने कोड को ट्रिगर कर रहे हैं, तो निर्माण से पहले विकल्प शुरू करें "Xvfb शुरू करें, और आपकी मदद के बाद इसे बंद कर दें।" इसने मेरी मदद की।


0

किसी अन्य उपयोगकर्ता को बदलें और रूट को छोड़कर प्रयास करें। इससे मेरा काम बनता है।



0

Ubuntu 17.10 के लिए X वर्चुअल फ्रेम बफर (xvfb) स्थापित करें

apt install xvfb

और इन पंक्तियों को / etc / प्रोफाइल फ़ाइल में जोड़ा ...

# 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

2
अब मुझे सिर्फ "थ्रेड इन एक्सेप्शन" मुख्य "java.awt.AWTError: DISPLAY वैरिएबल के मान के रूप में 'लोकलहोस्ट: 1.0' का उपयोग करके X11 विंडो सर्वर से कनेक्ट नहीं किया जा सकता है।" उबंटू 16.04 पर। Xvfb बाइनरी अब / usr / bin, not / usr / X11R6 / bin पर स्थित लगती है, लेकिन मुझे "स्क्रीन 0 नहीं जोड़ सकती (EE)" देती है।
क्रिस जेनक्स

0

मेरे मामले में यह त्रुटि DISPLAY पोर्ट से संबंधित नहीं थी। मैं एक XML को विंडचिल (एक पीएलएम-सॉफ्टवेयर) में लोड करने की कोशिश कर रहा था और टर्मिनल पर केवल उपरोक्त त्रुटि प्राप्त की। लॉगफ़ाइल में मुझे रिपोर्ट मिली कि मेरी XML-फ़ाइल भ्रष्ट थी । हो सकता है कि किसी को एक समान समस्या हो और वह इस उत्तर का उपयोग कर सके।


0

मेरा मुद्दा फ़ायरवॉल के साथ था। इसे अस्थायी रूप से अक्षम कर दिया।

[संपादित करें] और, सर्वर होस्टनाम एक और आईपी की ओर इशारा कर रहा था। इसे केवल स्थानीय पर्यवेक्षक के पास सेट करें। strace xclockइस समस्या को डीबग करने में मदद की।


0

मैंने Xorg का उपयोग करके लॉग इन करके इस समस्या को ठीक किया है। डिफ़ॉल्ट रूप से, मैंने वेलैंड का उपयोग किया है। ऐसा लग रहा है कि जिस तरह से Xorg के अपने मुद्दे हैं, वेनलैंड अधिकांश डिज़ाइन दोषों को समाप्त करता है।यहां छवि विवरण दर्ज करें


-1

मेरे लिए, समस्या यह थी कि 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
  • x11-drv-अति-firware-7.6.1-2.el6.noarch
  • x11-xauth-1.0.9-1.el6.x86_64
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.