Java Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable

JavaLinuxX11Xserver

Java Problem Overview


I have a script using java to connect to display X11 in the port 10.0 at localhost

but i get always this error

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)

I have tried everything to solve this problem like :

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

I tried also the port 0.0 but i get always the same error

after trying xhost

xhost +local:all
xhost:  unable to open display ""
xhost:  unable to open display ":10.0"

how can i fix this i thought that the X Server is not runing so i tried startx its says its runing at that port

my system is Ubuntu server edition 10.04

Java Solutions


Solution 1 - Java

You need to specify the -Djava.awt.headless=true parameter at startup time.

Solution 2 - Java

Remove the DISPLAY variable

unset DISPLAY

This helps in most cases (e.g. starting application servers or other java based tools) and avoids to modify all that many command lines.

It can also be comfortable to add it to the .bash_profile for a dedicated app-server/tools user.

Solution 3 - Java

This command helped me to solve the problem:

export DISPLAY=:0

Solution 4 - Java

I think you are working in sudo mode.Please checkout to the user mode and try again

Solution 5 - Java

In case anybody trying to run the automated unit tests via maven-surefire-plugin on CI(jenkins,..), and getting the above mentioned error, be sure to update your surefire plugin configuration :

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

Solution 6 - Java

This will fix it:

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

Solution 7 - Java

For me logging in as -Y instead of -X worked.

In case you've got untrusted X11 as shown below, then try -Y flag instead (if you trust the host):

Warning: untrusted X11 forwarding setup failed: xauth key data not generated

Solution 8 - Java

If you are trying to export display using su and it still doesn't work. This is what worked for me. Try X11 forwarding for sudo users.

Connect the remote host using the -X option with ssh.

# ssh -X root@remote-host

Now list the coockie set for the current user.

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

Switch to another user account using sudo. Add the cookie from the command output above to the sudo user.

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

Export the display from step 2 again for the sudo user. Try the command xclock to verify if the x client applications are working as expected.

# export DISPLAY=localhost:10.0

source: https://www.thegeekdiary.com/how-to-set-x11-forwarding-export-remote-display-for-users-who-switch-accounts-using-sudo/

Solution 9 - Java

First: start XQuartz

Second: ssh -X user@ip_address

...: start your process

if you ssh and then start XQuartz you will get that error

Solution 10 - Java

After several days of futile effort of installing glassfish on raspberry pi 2 with headless fedora 22, Below worked for me without a hitch

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

got my help from here

Solution 11 - Java

This fixed my problem

xhost +

but Be aware that xhost + completely deactivates authentication and allows everyone to access all application on your screen.

xhost +si:localuser:root seems to work similar with proper authentication.

Solution 12 - Java

I was using Xming and got similar error. Following steps were taken to fix the issue:

  1. In Xming launch check the box no access control.
  2. In putty ran the following command: DISPLAY=XXX.XXX.XXX.XX:0.0; export DISPLAY

Replace XXX.XXX.XXX.XX with your IP address.

Solution 13 - Java

First do this either in Build Phase of Jenkins if using or set in /etc/profile:

unset DISPLAY
export DISPLAY=:0

then set this property either in java code or using maven: -Djava.awt.headless=false

Solution 14 - Java

Solved. I just logout and login with xorg!

Solution 15 - Java

Michael-O gave useful approach to solve the problem. Another way to solve this is by starting the server with Putty Console.

Solution 16 - Java

In my case there was no space left in my machine and I faced the same issue. Some times it could be the space issue. Check the space in your Linux/Unix environment and make sure your machine have enough space.

Solution 17 - Java

For Ubuntu 17.10 Install X virtual frame buffer (xvfb)

apt install xvfb

And added these lines to the /etc/profile file...

# 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

Solution 18 - Java

check whether $DISPLAY variable is set or not, with the below command:

echo $DISPLAY

if the display variable is not set, run the below command to set, (even if it is set, you can have below one for your session)

export DISPLAY=:0.0

in putty also have the x display location as :0.0

Solution 19 - Java

I had the same issue on the Linux server I was working on. Connecting java to a X11 display worked on the head node, but not on any other. After contacting the administrator, it turned out that the current version of our job-scheduling system (SLURM) did not support X11 forwarding. They had to update SLURM (newer versions of SLURM support it) for it to work.

Solution 20 - Java

the only way i got it to work was running the script with a template. e.g. sudo ./glassfish-3.1.2.2-unix.sh -s template

This installs Glassfish in Silent Mode. http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html

Solution 21 - Java

I run into the same error with you when i run the jconsole command at remote. I want to modify a parameter at jconsole that run on a remote Linux host, i can login the host use the secureCRT, the terminal throw this error information. Fortunately, when use the Putty, it's ok. Weird....

Solution 22 - Java

If you see this error in Hudson, try to remove the .java directory from your home directory, it may work for you.

Solution 23 - Java

If you start application on a remote server while logged in by ssh then another way would be to start ssh with -x parameter or add ForwardX11 no in your /etc/ssh/ssh_config. In this case ssh will not create environment variable DISPLAY.

Solution 24 - Java

If you're triggering your code from Jenkins, enabling the option "Start Xvfb before the build, and shut it down after" might help. It helped me.

Solution 25 - Java

change to a another user and try except root. it works for me.

Solution 26 - Java

I just didn't log out of root before running ./studio.sh All set.

Solution 27 - Java

In my case this error was not related to the DISPLAY port. I was trying to load an XML into Windchill (a PLM-software) and received only the above error on the terminal. In a logfile I found the report that my XML-file was corrupt. Maybe someone has a similar problem and can use this answer.

Solution 28 - Java

Mine issue was with the firewall. Disabled it temporarily.

[EDIT] And, the server hostname was pointing to another IP. Set it to simply localserver. strace xclock helped to debug this issue.

Solution 29 - Java

I have fixed this issue by logging in using Xorg. By default, I have used Wayland. It looks like Wayland eliminates most of the design flaws of the Xorg it has its own issues.enter image description here

Solution 30 - Java

For me none of the above worked, but after long search this worked for me.

export DISPLAY=localhost:20.0

Solution 31 - Java

  1. export localhost:1

  2. -Djava.awt.headless=true

Solution 32 - Java

For me, the problem was that xorg-x11-xauth wasn't installed. I installed it and then it worked.

The packages that I have now are:

  • libX11-common-1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • xorg-x11-drv-ati-firware-7.6.1-2.el6.noarch
  • xorg-x11-xauth-1.0.9-1.el6.x86_64

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionElterooooView Question on Stackoverflow
Solution 1 - JavaMichael-OView Answer on Stackoverflow
Solution 2 - JavabebboView Answer on Stackoverflow
Solution 3 - JavaMaryam SaeidiView Answer on Stackoverflow
Solution 4 - JavaHarsh V PillaiView Answer on Stackoverflow
Solution 5 - JavaPuneetsriView Answer on Stackoverflow
Solution 6 - JavagrepitView Answer on Stackoverflow
Solution 7 - JavaloknathView Answer on Stackoverflow
Solution 8 - JavaMohamed ELJView Answer on Stackoverflow
Solution 9 - JavaAleks TkachenkoView Answer on Stackoverflow
Solution 10 - JavaN_EView Answer on Stackoverflow
Solution 11 - JavaBercoveView Answer on Stackoverflow
Solution 12 - JavaShashank View Answer on Stackoverflow
Solution 13 - JavaPankaj Kumar KatiyarView Answer on Stackoverflow
Solution 14 - JavaNileshView Answer on Stackoverflow
Solution 15 - JavaKoti ReddyView Answer on Stackoverflow
Solution 16 - Javauser3016200View Answer on Stackoverflow
Solution 17 - JavacwilliamszView Answer on Stackoverflow
Solution 18 - JavaNaresh AView Answer on Stackoverflow
Solution 19 - JavaM MView Answer on Stackoverflow
Solution 20 - JavajanexView Answer on Stackoverflow
Solution 21 - JavaDavidView Answer on Stackoverflow
Solution 22 - Javauser2945593View Answer on Stackoverflow
Solution 23 - Javauser3132194View Answer on Stackoverflow
Solution 24 - JavaAkshay MaldhureView Answer on Stackoverflow
Solution 25 - JavaVinod RangaView Answer on Stackoverflow
Solution 26 - JavaPraveen Kumar VermaView Answer on Stackoverflow
Solution 27 - JavaLMNView Answer on Stackoverflow
Solution 28 - JavaSeffView Answer on Stackoverflow
Solution 29 - JavaEaswer A.PView Answer on Stackoverflow
Solution 30 - JavaveerView Answer on Stackoverflow
Solution 31 - JavaDhammadipView Answer on Stackoverflow
Solution 32 - JavaKwokman ChungView Answer on Stackoverflow